zookeeper两大核心与API

zookeeper的两大核心

    文件系统

        存储
        进入zk的客户端:
            zkCli.sh   [zk: localhost:2181(CONNECTED) 0] 
        
        1)zk的文件系统  和linux的文件系统目录结构一样  从/开始的
        2)zk的路径访问方式  只有绝对路径  没有相对路径
        所有的路径访问从/开始
        3)
        zk中没有文件的概念  也没有目录的概念  
        只有节点的概念  节点Znode
        Znode既有文件的功能  又有目录的功能
        
        4)zk的Znode的分类:
            从生命周期:
                1)临时节点  EPHEMERAL
                    创建命令:create -e 节点名字(全路径的) 存储内容
                    临时节点只对当前客户端生效  当前客户端退出  临时节点失效
                    临时节点随着客户端的退出而删除的
                2)永久节点
                    创建命令:create 节点名字(全路径的) 存储内容
                    默认创建的节点都是永久节点
                    永久节点对所有客户端生效  
                    不会自动删除 
                    要想删除 手动删除
            按有无编号分:
                1)有编号节点  SEQUENTIAL  -s
                        永久有编号节点
                            命令:create -s 节点名字(全路径的) 存储内容
                            在创建的节点名称后添加一个编号 这个编号从0开始的
                            这个编号是由父节点维护的
                            这个编号顺序递增  不管节点是有编号还是无编号都会顺序递增
                            编号:记录当前父节点下的子节点个数  及子节点的创建顺序的
                            
                            特点:重复创建相同名称的节点  因为自动添加编号
                            
                        临时有编号节点:
                            创建命令:create -e -s 节点名字(全路径的) 存储内容
                            
                        这个编号是不分有编号还是无编号的,
                        临时的还是永久的,
                        存在的还是删除的都会顺序递增
                        可以创建多次的

                2)无编号节点
                        永久无编号节点
                            create 节点名字(全路径的)存储内容
                            
                        临时无编号节点
                            create -e 节点名字(全路径的)存储内容
                        
                    特点:没有编号  只能创建一次
        5)临时节点不能有子节点
        永久节点是可以有子节点的
        
        有子节点的节点 一定是永久节点
        6)对于zk来说他的Znode存储大小不要超过1M
        最好不要超过1kb的数据
            1)zk存储的只是核心信息   状态
            2)zk来说   每一个Znode存储的数据越大  一致性越难保证
        7)对于zk来说,有几个节点数据就会存储几份
            每一个节点存储的数据一样的
        8)可以对Znode添加监听
        监听对象:Znode
            
    
    
    监听机制:
        用自己的监听机制  监听自己的文件系统
        如果你对zk的文件系统中的某一个Znode感兴趣  
        就可以对这个Znode添加监听
        
        监听事件的类型:
            Znode创建  nodeCreated
            Znode删除    nodeDeleted
            Znode的数据变化 nodeDataChanged
            Znode的子节点的变化  nodeChildrenChanged
        
        监听的添加操作:
            shell 命令最后 watch  代表添加了监听
            ls/getChildren ---nodeChildrenChanged
            stat path [watch]
            get/getData path [watch]  --- nodeDataChanged
            exists(API)------  nodeCreated  nodeDeleted
        监听的触发操作:
            ls/getChilren  create   delete
            get/getData    set
            
            
            1)create
            2)delete/rmr
            3)set
        注意:添加一次监听只能生效一次
        想要再次生效   只能重新添加
        
            
            

shell:
    zkCli.sh
    help  查看所有的命令
        stat path [watch]
        set path data [version]
        ls path [watch]
        delquota [-n|-b] path
        ls2 path [watch]
        setAcl path acl
        setquota -n|-b val path
        history 
        redo cmdno
        printwatches on|off
        delete path [version]
        sync path
        listquota path
        rmr path
        get path [watch]
        create [-s] [-e] path data acl
        addauth scheme auth
        quit   退出客户端
        getAcl path
        close   关闭连接
        connect host:port
        
        1)创建节点
        create [-s] [-e] path data
            create path data
            create -e path data
            create -s path data
            create -s -e path data
        2)获取节点内容
            get path(绝对路径)
        3)修改节点内容
            set path data
            set /test00 "hello"
        4)删除节点
            delete path 
                只能删除空节点  删除没有子节点的节点
            rmr path
                rmr /test00
                可以删除非空的节点   也可以删除空节点
        5)连接zk
        connect host:port
        connect hadoop02:2181
        
        6)查看历史操作命令
        history  
        7)查看节点状态信息
            stat path
            
            
            cZxid = 0x300000005
            节点的创建时间
            ctime = Fri Oct 26 01:15:23 CST 2018
            mZxid = 0x300000005
            节点的修改时间
            mtime = Fri Oct 26 01:15:23 CST 2018
            pZxid = 0x30000000c
            节点的版本信息
            cversion = 4
            dataVersion = 0
            aclVersion = 0
            节点的属性  永久的  还是 临时的  这个参数标识的
            ephemeralOwner = 0x0
            存储的数据长度
            dataLength = 0
            子节点的个数
            numChildren = 4
            
            解析:
            1)ephemeralOwner 
            如果是永久节点  值=0x0
            如果是临时节点  zk每次进入客户端的时候都会有一个当前客户端的sessionid
            sessionid = 0x266ac28a1a50001  用于标识当前客户端的
            
            如果是临时节点  这个值就是sessionid
            
            ephemeralOwner = 0x266ac28a1a50001
            
            2)Zxid   当前节点全局唯一id标识
            全局性的顺序递增  
            id实际上标识  全局的事件提交顺序
            cZxid:创建节点事件的id标识
            mZxid:修改节点事件的id标识                    
            pZxid:子节点变化的事件的id
            
            上面的三个id无论哪一个事件发生  都是全局变化的
            cZxid=00000002
            mZxid=00000002
            pZxid=00000002
            修改节点:
            cZxid=00000002
            mZxid=00000003
            pZxid=00000002
            
            在/创建了3个节点
            创建一个子节点:
            cZxid=00000002
            mZxid=00000003
            pZxid=00000007
            
            每次事件提交的时候 都是在全局的最大的id之上进行顺序递增的
            zxid用于标识整个分布式集群中各个节点的数据版本 这个zxid越大
            证明数据版本越新
            
        

API:
    配置zk的开发环境  eclipse
    eclipse上配置zk的可视化连接界面
    1)解压zk的插件包  
    2)将插件包下的所有的jar包  放在eclipse的插件包的位置下
    %ECLIPSE_HOME%\plugins
    3)打开eclipse进行可视化配置

4)进入windowzhongshow view 找到zookeeper并双击打开
zookeeper两大核心与API_第1张图片
6)点击黄色图标,新建连接,添加zookeeper节点
zookeeper两大核心与API_第2张图片

你可能感兴趣的:(zookeeper两大核心与API)