zookeeper的簡介和相關命令操做

1. zookeeper的簡介node

  zookeeper由文件系統和通知機制構成數據庫

  應用場景:緩存

   ①dubbo+ zookeeper 實現rpc遠程調用中服務器

   ②負載均衡session

   ③發佈訂閱負載均衡

   ④分佈通知、分佈式鎖分佈式

  1)文件系統性能

    Zookeeper使用樹形結構管理數據。並且以「/」做爲樹形結構的根節點。樹形結構中的每個節點都是一個「znode」。文件系統中的目錄能夠存放其餘目錄和文件,znode中能夠存放其餘znode,也能夠對應一個具體的值,znode和它對應的值之間是鍵值對的關係。測試

  樹形結構ui

    ①樹形結構的主體由znode組成

    ②每個節點包含下面兩部分

      I. 值:節點的路徑和當前節點上保存的值構成一個「鍵值對(key-value)」關係

      II. 狀態 stat

  2)通知機制

    在分佈式項目中隨着業務功能愈來愈多,具體的功能模塊也會愈來愈多,一個大型的電商項目能達到幾十個模塊甚至更多。這麼多模塊的工程由可能須要共享一些信息,這些信息一但發生變化,各個相關模塊工程中手動逐一修改會很是的麻煩,甚至可能發生遺漏。

    使用ZooKeeper的通知機制後,各個模塊工程在特定的znode上設置Watcher(觀察者)來監控當前節點上值的變化,一旦Watcher檢測到了數據變化就會當即通知模塊,從而實現「一處修改,到處生效」的效果。

    ①目的:一處修改到處更新

    ②機制:觀察者模式

    

2. zoo_sample.cfg文件解析

  該文件在zookeeper的解壓包的conf中(如:/opt/zookeeper-3.4.9/conf

  文件中的各個參數的說明:

   1)tickTime  通訊心跳數,zookeeper服務器心跳時間,單位毫秒。

    Zookeeper使用的基本時間,服務器之間或者客戶端與服務器之間維持心跳的時間間隔,也就是每一個tickTime時間就會發送一個心跳。

    用於心跳機制,而且設置最小的session超時時間爲兩倍心跳時間(session的最小超時時間是2 * tickTime)。

  2)initLimit  LF初始通訊時限

    集羣中的Follower跟隨者服務器(F)與Leader領導者服務器(L)之間初始鏈接時能容忍的最多心跳數(tickTime的數量)

    投票選舉新Leader的初始化時間Follower在啓動過程當中,會從Leader同步全部最新數據,而後肯定本身可以對外服務的起始狀態。

    Leader容許Follower在initLimit時間內完成這個工做。

  3)syncLimit  LF同步通訊時限

    集羣中Leader與Follwer之間的最大響應時間單位,假如響應超過syncLimit * tickTime,Leader認爲Follwer死掉,從服務器列表中刪除Follower

    在運行過程當中,Leader負責與ZooKeeper集羣中全部機器進行通訊,例如經過一些心跳檢測機制,來檢測機器的存活狀態。

    若是L發出心跳包在syncLimit以後,尚未從F那收到響應,那麼久認爲這個F已經不在線了。

  4)dataDir  數據文件目錄 + 數據持久化路徑

    保存內存數據庫快照信息的位置,若是沒有其餘說明,更新的事務日誌也保存到數據庫。

  5)clientPort  客戶端鏈接端口

    

        

 3.  ZooKeeper經常使用命令

  1)服務端的相關命令(在zookeeper安裝目錄的bin目錄下)

    啓動:./zkServer.sh start

    中止:./zkServer.sh stop

    查看狀態:./zkServer.sh status

  2)客戶端的相關命令

    進入:./zkClient.sh

    退出:quit

  3)客戶端節點相關操做

    ①ls / ls2

    ②create  [-s] [-e] path data 建立節點和節點上對應的值

      【-s】:含有序列

      【-e】:臨時(重啓或者超時消失)

      【path】:節點的路徑

      【data】:節點上綁定的值

    例:create /test  abc

    ③deletermr

      【delete】 只能刪除空節點

      【rmr】能夠在刪除當前節點時遞歸刪除子節點

    ④stat path 查看狀態

  4)節點值操做命令

    ①set  path data:設置值

    例:set /test aaa

    ②get  path data:獲取值

    例:get /test

   注:若敲錯了命令,則會給出全部的命令操做提示信息

  5)關於狀態stat信息的詳細說明:

    簡介:znode維護了一個stat結構,這個stat包含數據變化的版本號、訪問控制列表變化、還有時間戳。版本號和時間戳一塊兒,可以讓ZooKeeper驗證緩存和協調更新。每次znode的數據發生了變化,版本號就增長。  

    參數說明:

    czxid:引發這個znode建立的zxid,建立節點的事務的zxid(ZooKeeper Transaction Id)

    ctime:znode被建立的毫秒數(從1970年開始)

    mzxid:znode最後更新的zxid

    mtime:znode最後修改的毫秒數(從1970年開始)

    pZxid:znode最後更新的子節點zxid

    cversion:znode子節點變化號,znode子節點修改次數

    dataversion:znode數據變化號

    aclVersion:znode訪問控制列表的變化號

    ephemeralOwner:若是是臨時節點,這個是znode擁有者的session id。若是不是臨時節點則是0。

    dataLength:znode的數據長度

    numChildren:znode子節點數量

  6)四字命令

    ZooKeeper支持某些特定的四字命令,他們大可能是用來查詢ZooKeeper服務的當前狀態及相關信息的,使用時經過telnet或nc向ZooKeeper提交相應命令。例:echo ruok | nc localhost 2181

    ①nc命令須要安裝對應的程序纔可使用。

      yum install -y nc

    ②經常使用四字命令

      ruok:測試服務是否處於正確狀態。若是確實如此,那麼服務返回「imok 」,不然不作任何相應

      stat:輸出關於性能和鏈接的客戶端的列表

      conf:輸出相關服務配置的詳細信息

      cons:列出全部鏈接到服務器的客戶端的徹底的鏈接 /會話的詳細信息。包括「接受 / 發送」的包數量、會話id 、操做延遲、最後的操做執行等等信息

      dump:列出未經處理的會話和臨時節點

      envi:輸出關於服務環境的詳細信息(區別於conf命令)

      reqs:列出未經處理的請求

      wchs:列出服務器watch的詳細信息

      wchc:經過session列出服務器watch的詳細信息,它的輸出是一個與watch相關的會話的列表

      wchp:經過路徑列出服務器 watch的詳細信息。它輸出一個與 session相關的路徑

相關文章
相關標籤/搜索