大数据—zookeeper介绍-配置-安装-使用命令

zookeeper
-------------
    1.管理大量主机的协同服务。
    2.分布式应用,实现分布式读写技术。
    3.zk提供的服务
        Naming service                //按名称区分集群中的节点.(DNS的功能)
        Configuration management    //对加入节点的最新化处理。()
        Cluster management            //实时感知集群中节点的增减.
        Leader election                //leader选举
        Locking and synchronization service    //修改时锁定数据,实现容灾.
        Highly reliable data registry        //节点宕机数据也是可用的。


zk安装(单机版,192.168.56.11(自己设置本地IP地址))
---------------
    1.jdk(oracle官网下载)

    2.下载zookeeper-3.4.9.tar.gz

    3.tar开:tar -zxvf zookeeper-3.4.9.tar.gz

    4.符号连接环境变量
        $>ln -s zookeeper-3.4.9 zk
        bin/zkServer.sh start(执行时会发生错误,看报错的原因)
        主要读README。txt文件,文件中有大量的安装信息以及注意的点

    5.配置zk,复制zoo.cfg.sample-->zoo.cfg
        [zk/conf/zoo.conf]
        # The number of milliseconds of each tick
        tickTime=2000
        initLimit=10
        syncLimit=5
        dataDir=/usr/local/log/zookeeper
        clientPort=2181
    
    6.启动zk服务器
        $>bin/zkServer.sh start
    
    7.验证zk
        $>netstat -anop | grep 2181

    8.启动客户端连接到服务器
        $>zkCli.sh -server 192.168.56.11:2181    //进入zk命令行
        $zk]help                        //查看帮助
        $zk]quit                        //退出
        $zk]create /a tom                //
        $zk]get /a                        //查看数据
        $zk]ls /                        //列出节点
        $zk]set /a tom                    //设置数据
        $zk]delete /a                    //删除一个节点
        $zk]rmr /a                        //递归删除所有节点。

    9.通过api访问zk
        9.1[pom.xml]
        
                          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
            4.0.0

            com.it18zhang
            ZooKeeperDemo
            1.0-SNAPSHOT

            
                
                    org.apache.zookeeper
                    zookeeper
                    3.4.9
                

                
                    junit
                    junit
                    4.11
                

            
        

        9.2[代码]
        package com.it18zhang.zktest;
        import org.apache.zookeeper.ZooKeeper;
        import org.junit.Test;
        import java.util.List;

         */
        public class TestZK {
            @Test
            public void ls() throws  Exception{
                ZooKeeper zk = new ZooKeeper("s201:2181",5000,null);
                List list = zk.getChildren("/",null);
                for(String s : list){
                    System.out.println(s);
                }
            }
        }

 

大数据—zookeeper介绍-配置-安装-使用命令_第1张图片
zk架构(主要也是采用的是CS的架构)有客户端和服务端的概念就构成集群的最基本的组成。
------------------
    1.Client
        从server获取信息,周期性发送数据给server,表示自己还活着。
        client连接时,server回传ack信息。
        如果client没有收到reponse,自动重定向到另一个server.

    2.Server
        zk集群中的一员,向client提供所有service,回传ack信息给client,表示自己还活着。

    3.ensemble(zookeeper的服务器集群)
        一组服务器。
        最小节点数是3.

    4.Leader
        如果连接的节点失败,自定恢复,zk服务启动时,完成leader选举。

    5.Follower
        追寻leader指令的节点。

znode(zookeeper的节点)
------------------
    zk中的节点,维护了stat,由Version number, Action control list (ACL), Timestamp,Data length.构成.
    data version        //数据写入的过程变化

    ACL                    //action control list,


节点类型
-----------------
    1.持久节点
        client结束,还存在。
        
    2.临时节点
        在client活动时有效,断开自动删除。临时节点不能有子节点。
        leader推选是使用。

    3.序列节点
        在节点名之后附加10个数字,主要用于同步和锁.

Session
--------------------
    Session中的请求以FIFO执行,一旦client连接到server,session就建立了。sessionid分配client.

    client以固定间隔向server发送心跳,表示session是valid的,zk集群如果在超时时候,没有收到心跳,
    判定为client挂了,与此同时,临时节点被删除。

Watches
-------------------
    观察。
    client能够通过watch机制在数据发生变化时收到通知。
    client可以在read 节点时设置观察者。watch机制会发送通知给注册的客户端。
    观察模式只触发一次。
    session过期,watch机制删除了。


zk工作流程
----------------
    zk集群启动后,client连接到其中的一个节点,这个节点可以leader,也可以follower。
    连通后,node分配一个id给client,发送ack信息给client。
    如果客户端没有收到ack,连接到另一个节点。
    client周期性发送心跳信息给节点保证连接不会丢失。

    如果client读取数据,发送请求给node,node读取自己数据库,返回节点数据给client.


    如果client存储数据,将路径和数据发送给server,server转发给leader。
    leader再补发请求给所有follower。只有大多数(超过半数)节点成功响应,则
    写操作成功。

你可能感兴趣的:(大数据,云计算—PAAS)