【大資料筆記】白話詳解Zookeeper的一致性

來源:互聯網
上載者:User

標籤:

 下面內容主要摘抄於<<Hadoop實戰>>,紅色高亮部分是本人添加的白話注釋. 

Zookeeper 是一種高效能、可擴充的服務。 Zookeeper 的讀寫速度非常快,並且讀的速度要比寫的速度更快。另外,在進行讀操作的時候, ZooKeeper 依然能夠為舊的資料提供服務。這些都是由於 ZooKeepe 所提供的一致性保證,它具有如下特點:

【Zookeeper提供的一致性是弱一致性,首先資料的複製有如下規則:zookeeper確保對znode樹的每一個修改都會被複製到集合體中超過半數的機器上。那麼就有可能有節點的資料不是最新的而被用戶端訪問到。並且會有一個時間點,在叢集中是不一致的.

也就是Zookeeper只保證最終一致性, 但是即時的一致性可以由用戶端調用自己來保證,通過調用sync()方法.

順序一致性

用戶端的更新順序與它們被發送的順序相一致。

 

原子性

更新操作要麼成功要麼失敗,沒有第三種結果。

 

單系統鏡像

無論用戶端串連到哪一個伺服器,用戶端將看到相同的 ZooKeeper 視圖。

【如果資料不一致,怎麼能夠保證看到相同的視圖? 插入/刪除/修改都會對資料結構有影響】

 

可靠性

一旦一個更新操作被應用,那麼在用戶端再次更新它之前,它的值將不會改變。。這個保證將會產生下面兩種結果:

1 .如果用戶端成功地獲得了正確的傳回碼,那麼說明更新已經成果。如果不能夠獲得傳回碼(由於通訊錯誤、逾時等等),那麼用戶端將不知道更新操作是否生效。

2 .當從故障恢複的時候,任何用戶端能夠看到的執行成功的更新操作將不會被復原。

 

即時性

在特定的一段時間內,用戶端看到的系統需要被保證是即時的(在十幾秒的時間裡)。在此時間段內,任何系統的改變將被用戶端看到,或者被用戶端偵測到。

【偽即時性,太讓人誤解了,直白點說就是資料可以在十幾秒Sync到各個節點,保證最終一致性. 我第一時間看到這個即時性的時候,我就好奇,Oracle RAC花了老鼻子勁才保證了即時性和一致性,Zookeeper是如何輕鬆做到的,原來是個假的,還說的那麼讓人誤會. 

 

給予這些一致性保證, ZooKeeper 更進階功能的設計與實現將會變得非常容易,例如: leader 選舉、隊列以及可撤銷鎖等機制的實現。

 

 

用分布式系統的CAP原則來分析Zookeeper.

1)C: Zookeeper保證了最終一致性,在十幾秒可以Sync到各個節點.

2)A: Zookeeper保證了可用性,資料總是可用的,沒有鎖.並且有一大半的節點所擁有的資料是最新的,即時的. 如果想保證取得是資料一定是最新的,需要手工調用Sync()

3)P: 有2點需要分析的.

          節點多了會導致寫資料延時非常大,因為需要多個節點同步.

          節點多了Leader選舉非常耗時, 就會放大網路的問題. 可以通過引入observer節點緩解這個問題.

 

 

http://www.cnblogs.com/lpshou/archive/2013/06/14/3136904.html

 

轉載部落格:http://flyfoxs.iteye.com/blog/2121560

【大資料筆記】白話詳解Zookeeper的一致性

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.