Zookeeper基礎概念及基本命令簡介

關於Zookeeper需要了解的核心概念及常用命令
在分佈式系統構建的集羣中,每臺機器都有自己的角色定位,其中最爲典型的就是Master/Slave模式
Master:提供寫操作服務
Slave:通過異步複製的機制獲取新數據並提供讀服務
Zookeeper中引入了三種角色:Leader、Follower、Observer
Zookeeper通過選舉選定一臺機器爲Leader,這臺機器爲客戶提供讀寫服務
 
Session會話機制
當客戶端與服務器端成功建立連接後,session會話會隨之建立,同時這個時候會生成一個全局的SessionID。在Zookeeper中,一個客戶端連接指的是客戶端和服務器之間的一個TCP長連接。
Zookeeper對外服務端口默認是2181,當客戶端啓動時,新建立的TCP連接也將第一次啓動,它可以通過心跳檢測與服務器保持有效會話,同時它還會向Zookeeper發送請求並接收響應,另外還可以接收來自服務器的Watch事件通知。
Session中的SessionTimeout值用來設置客戶端的超時時間,當出現故障又想保持之間創建的會話,則需要在SessionTimeout規定的超時時間範圍內重新連接到集羣上的任意一臺服務器
 
Zookeeper中數據節點
    Zookeeper中的節點指的是數據模型中數據單元,也叫做數據節點。
    數據模型是以樹的格式進行存儲的,並通過/來進行路徑的分割,分割後的每一個Znode都會保存自己的數據內容,同時也會保存一系列的屬性值
    Zookeeper中的每一個Znode都會對應一個叫做Stat的數據結構。Stat記錄了三個數據版本(version[當前Znode版本]、cversion[子節點版本]、aversion[ACL版本])
    當用戶在Zookeeper中註冊了一些Watcher(時間監聽器)後,在一些特定的事件觸發的情況下,Zookeeper會把事件通知發送到感興趣的客戶端上
 
Zookeeper的權限控制策略:
    採用了ACL(Access Control Lists)策略
    定義了5種權限
  1. CREATE:創建子節點的權限
  2. READ:獲取節點數據和子節點的權限
  3. WRITE:更新節點數據的權限
  4. DELETE:刪除子節點的權限
  5. ADMIN:設置節點ACL的權限
 
關於Zookeeper的配置文件說明:zoo.cfg
    tickTime:指定了ZooKeeper中的基本時間單元
    dataDir:指定存儲持久數據的本地位置
    ClientPort:監聽客戶端連接的端口
    initLimit:設定所有跟隨者與節點進行連接並同步的時間範圍,當在設定的時間段內半數以上的跟隨者未完成同步,則會進行一次Leader選舉
    SyncLimit:設定允許Flower與Leader進行同步的時間
    server.1……:分別代表了節點的IP地址(如果配置了hosts可以使用置的名稱)
 
Zookeeper環境變量的配置
    環境變量在.bash_profile中進行配置
    先確定Zookeeper的安裝路徑(如:/root/software/zookeeper-3.4.14)
    export ZOOKEEPER_HOME=/root/software/zookeeper-3.4.14
    export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin
    更新完.bash_profile後執行命令 source .bash_profile 使配置的環境生效
    使用命令:zkServer.sh status    可以查看當前機器下的狀態
    
Zookeeper中常用命令
  1. zkServer.sh start        啓動ZooKeeper服務
  2. zkServer.sh status      查看Zookeeper服務狀態
  1. zkServer.sh stop        停止Zookeeper服務
  2. zkServer.sh restart     重啓Zookeeper服務
 
客戶端連接Zookeeper的相關操作
    客戶端需要連接ZooKeeper可以使用zkCli.sh命令
    命令格式:zkCli.sh -server IP:port
    如:zkCli.sh -server node1:2181
    查看ZooKeeper常用命令:當連接上去後可以輸入help查看有哪些命令
    connect命令:連接ZooKeeper服務器端,如:connect node2:2181
    ls命令:列出對應目錄下的文件,是必須以/開頭的
    create命令:創建節點 如:create /mynode1 content1
    get命令:獲取數據與信息,如:get /mynode1
    set命令:修改節點的內容,如:set /mynode1 content2  (注意:修改完數據後它的內容中有一個dataVersion會自增1)
    delete命令:刪除節點,如:delete /mynode(注意:如果節點下存在子節點則需要先刪除子節點)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章