1. 程式人生 > >zookeeper兩大核心與API

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並雙擊開啟
在這裡插入圖片描述
6)點選黃色圖示,新建連線,新增zookeeper節點
在這裡插入圖片描述