閱讀480 返回首頁    go 阿裏雲 go 技術社區[雲棲]


ZooKeeper

什麼是ZooKeeper

官網給於解釋是:
image
centralized service 集群服務
maintaining 維護

意思就是ZooKeeper是一個為 維護配置信息,域名維護, 提供分布式同步以及集體服務的集群服務係統. 所有的這些服務通常被用於其他分布式應用上.每次他們用於實現 大量關於 修複不可避免的bugs和線程競爭 的工作.由於實現這些服務的困難,最初的應用程序通常會對它們進行節省,這使得它們在出現變化和難以管理時變得脆弱.即使在正確的情況下,這些服務的不同實現在應用程序部署時也會導致管理複雜性。

百度給出的解釋是:

image

原理

ZooKeeper是以Fast Paxos算法為基礎的,paxos算法存在活鎖的問題,即當有多個proposer交錯提交時,有可能互相排斥導致沒有一個proposer能提交成功,而Fast Paxos作了一些優化,通過選舉產生一個leader,隻有leader才能提交propose,具體算法可見Fast Paxos。因此,要想弄懂ZooKeeper首先得對Fast Paxos有所了解。

Zookeeper 的基本運轉流程
1.選舉leader
2.同步數據
3.選舉leader過程中算法有很多,但要達到的選舉標準是一致的.
4.leader要具有最好的執行權
5.集群中大多數的及其得到響應並接受選出的leader

架構
image
功能
Zookeeper 分布式服務框架是 Apache Hadoop 的一個子項目,它主要是用來解決分布式應用中經常遇到的一些數據管理問題,如:統一域名服務、狀態同步服務、集群管理、分布式應用配置項的管理等
數據結構
image
Zookeeper這種數據結構有如下這些特點:

1.每個子目錄下如NameService都被稱作znode這個znode是被它所在的路徑唯一標識,如Server1這個znode的表示為NameService/server1
2.znode可以有子節點目錄,並且znode可以存儲數據,注意EPHEMERAL
3.znode是有版本的,每個znode中存儲的數據可以有多個版本,也就是一個訪問路徑可以存儲多份數據
4.znode可以使臨時節點,一旦創建這個znode的客戶端與服務器失去聯係,這個znode也將自動刪除,Zookeeper的客戶端和服務端通信采用長連接方式,每個客戶端和服務器通過心跳來保持連接,這個鏈接狀態稱為session如果znode是臨時節點,這個session失效.znode也就刪除
znode可以被臨時控製,包括這個目錄節點中存儲的數據的修改,子節點目錄的變化等,一旦變化可以通知設置監控的客戶端,這個是Zookeeper的核心特性,Zookeeper的很多功能是居於這個特性實現的

最後更新:2017-10-28 22:03:28

  上一篇:go  Zookeeper基本功能
  下一篇:go  Go語言與數據庫開發:01-08