了解了解你自己的话zookeeper(从那时起,纠正了一些说法在线)
1,先看看官方的定義吧:
ZooKeeper is a distributed, open-source coordination service for distributed applications. It exposes a simple set of primitives that distributed applications can build upon to implement higher
level services for synchronization, configuration maintenance, and groups and naming. It is designed to be easy to program to, and uses a data model styled after the familiar directory tree structure of file systems.
zookeeper 是一個分布式應用程序提供的分布式的開源的協調服務。
他提供了一個簡單的原語集,通過這些原語集能夠實現更高層次的同步服務,配置管理,集群管理和命名服務。他被設計為易于編程和以一種和文件系統很類似的數據模型來實現編程。
通過定義能夠了解到zookeeper都有哪些作用,無非就是一句話:能夠為分布式應用程序提供同步服務,命名服務等功能。可是了解到這里馬上就會產生疑問----還有好多開源項目都能夠為分布式應用程序提供這些服務啊,為什么要用zookeeper呢?
舉兩個樣例:
能夠用redis實現分布式鎖啊,或是不用redis隨便用個什么其它的什么東西都能夠作為分布式應用程序的鎖啊;
配置管理好像就更扯了。我隨便能夠把配置放到什么地方僅僅要讓分布式應用去讀就能夠了。
事實上。zookeeper不過只能提供這些功能也確實就沒什么存在的必要了,關鍵是他可以提高可用的高一致性的這些服務。
提到高可用的這幾個字,這時或許我們就會想到採用集群的方式(如今server部署的主流方式)。那么不過由于這個redis相同也能夠達到這個標準。可是zookeeper還有高一致性的特性。
整體上來講。zookeeper作為分布式應用的協調服務擁有一下特性:
高可用性。高一致性,高性能 (是不是對于分布式理論中的cap呢Consistency Availability Partition Tolerance 事實上cap理論也是受到爭議的)
以下主要說一說zookeeper的高一致性
Zookeeper使用了一種稱為Zab(Zookeeper Atomic Broadcast)的協議作為其一致性復制的核心,Zookeeper的實現是有Client、Server構成,Server端提供了一個一致性復制、存儲服務。
Server端很多其它的是存儲一些數據的狀態,而非數據內容本身,因此Zookeeper能夠作為一個小文件系統使用。數據狀態的存儲量相對不大。全然能夠所有載入到內存中,從而極大地消除了通信延遲。
對于分布式系統的一致性問題,事實上也就是在分布式環境下更新操作的順序問題。相應于學術術語也就是全序(她是集合其中的一個概念)
那么怎樣保證分布式環境下更新操作的順序呢?這個問題在在全然的分布式環境下是不可能的,可是能夠通過限定環境條件來解決問題。
例如以下:
1。通過物理時鐘(即絕對參照系)能夠實現,可是前提是在不同地方的物理時鐘沒有誤差
這個差點兒是不可能的, 由于全部的物理時鐘同步。古代關于時鐘另一個故事(參見羅輯思維-擊潰牛頓的鐘表匠)。只是現代google公布的spanner的核心技術中包括用衛星進行全球的datacenter之間的時鐘同步
2。通過嚴格的因果關系來確定順序。對于參照系, 選取不同的參照系可能會有不同的順序的推斷, 可是對于嚴格的因果關系, 不管在什么參照系下都不會改變的。
有人用狹義相對論來解釋感覺非常形象,狹義告訴我們時空中的事件并不存在一個始終如一的全序關系, 不同的觀察者對兩個事件誰先發生可能具有不同的看法. 當且僅當事件e2是由事件e1引起的時候, 事件e1和e2之間才存在一個先后關系
對于進程間的事件, 假設兩個進程沒有關聯或通信, 是無法推斷順序的
僅僅有當兩個進程間產生通信后, 產生因果關系, 從而來確定順序
如p1為發消息給Q事件, 而q2為從P收到消息事件, 則p1和q2間有明白的因果關系, 故能夠說p1 "happen before" q2, 即p1 –> q2
對于沒有明白的因果關系的事件, 無法推斷其順序, 僅僅能覺得他們屬于并發。
總結:
對于zookeeper來說,由于其是master-slave結構。
所以在存在leader正常工作的情況下。由leader作為唯一的參照物就可以。可是當leader down掉選舉發生的過程中。或者出現多個leader的情況下就沒有辦法了。
而zookeeper正是運用fastpaxos和zab來保證這中一致性。總之,zookeeper利用在全序列的思想下利用以ZAB為協議的fastpaxos算法實現了強一致性。
參考:
http://www.xuebuyuan.com/418353.html
http://breezes.lofter.com/post/d325_1aa98b
http://michael8335.iteye.com/blog/1723183
http://www.searchtb.com/2011/01/zookeeper-research.html
http://blog.csdn.net/chen77716/article/details/30635543
http://blog.csdn.net/chen77716/article/details/7309915
版權聲明:本文博主原創文章,博客,未經同意不得轉載。
總結
以上是生活随笔為你收集整理的了解了解你自己的话zookeeper(从那时起,纠正了一些说法在线)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 读书笔记:《搞定3--平衡工作和生活的艺
- 下一篇: iOS UITextField 设置下底