ZooKeeper總是CP(就CAP定理而言)是否正確? 或者有沒有將它用作服務發現需求的AP?ZooKeeper在CAP定理方面總是一致的嗎?
回答
不,您不能在當前版本的ZooKeeper中像在其他一些系統中一樣更改一致性保證。
如果集羣發生故障,您可以向客戶端添加本地高速緩存,使其只有只讀數據,但對於仍不是A的CAP而言,因爲它需要可用於更新以及讀取。
如果ZK提供的服務發現需求的一致性水平太高,您應該嘗試研究其他選項,例如,尤里卡,領事或etcd。
可能與上寫着:
出色的問題。
在CAP定理而言,「C」,其實就是線性化:
如果操作B.操作後啓動的成功完成,然後 操作B必須看到系統在相同的狀態,因爲它在 完成操作A或更新的狀態。
由於ZooKeeper中的寫入在仲裁確認後被認爲已完成,因此仍舊會有舊數據的舊節點。因此,嚴格來說,ZooKeeper默認情況下不是CP系統,儘管它提供了相當高的一致性。您可以通過在sync
命令前進行讀取來確保線性化。
關於網絡分區下的可用性,那些不是大多數的節點不能再處理寫入請求,因爲它們沒有仲裁。
參見:
動物園管理員不是A,因此它被稱爲CP顯然不能降P.。就CAP定理而言,「C」實際上意味着線性化。
線性化:如果操作B.操作後啓動的成功完成,然後操作B必須看到系統在相同的狀態,因爲它是在操作的完成,或更新狀態。
但是, 動物園管理員有順序一致性 - 更新從客戶端將在它們的發送順序應用。
ZooKeeper實際上在客戶端視圖中並不一致。 http://zookeeper.apache.org/doc/trunk/zookeeperProgrammers.html#ch_zkGuarantees
的ZooKeeper並不能保證在每個實例的時候,兩個不同的客戶會有ZooKeeper的數據的一致意見。由於網絡延遲等因素,一個客戶端可能會在另一個客戶端收到更改通知之前執行更新。考慮兩個客戶端A和B的情況。如果客戶端A將znode/a的值從0設置爲1,然後告訴客戶端B讀取/ a,則客戶端B可以讀取舊值0,具體取決於哪個服務器它連接到。如果客戶端A和客戶端B讀取相同的值很重要,則客戶端B在執行讀取操作之前應該先從ZooKeeper API方法調用sync()方法。
ZooKeeper提供「順序一致性」。這比線性化弱,但仍然非常強大,比「最終一致性」強得多。 ZooKeeper還提供了一個同步命令。如果您調用同步命令,然後執行讀操作,則讀操作將保證至少可以看到在同步啓動之前完成的最後一次寫操作。
linearizability
,寫入應該看起來是瞬時的。不準確的是,一旦寫入完成,所有後來的讀取(其中「稍後」由掛鐘開始時間定義)應返回該寫入的值或稍後寫入的值。一旦讀返回一個特定的值,其隨後所有的讀操作將返回該值或更高的寫入的價值。」
在動物園管理員,他們有同步()方法來使用,我們需要像線性化。
Serializability
是關於事務或一個或多個對一個或多個對象的操作的組的保證,它保證對多個項目執行一組事務(通常包含讀取和寫入操作)等同於某些串行執行(總訂購)
參見:
- 1. Zookeeper Watches系統是否有錯誤,或者這是CAP定理的限制嗎?
- 2. DynamoDB是否遵循CAP定理及其「強一致性」承諾?
- 3. 在CAP中可用性的一致性定理
- 4. 今天的技術是克服CAP定理的侷限性嗎?
- 5. 分佈式Erlang和在CAP定理
- 6. 只有分佈式系統遵循CAP定理嗎?
- 7. 什麼是ZooKeeper以及zookeeper的工作原理?
- 8. DynamoDB:條件寫入與CAP定理
- 9. 計算方格不一致的總數
- 10. Oracle RDBMS在CAP定理中的位置在哪裏?
- 11. Django的get_or_create方法總是導致一個新的記錄
- 12. 「可用性」如何在CAP定理中起作用。 AP裏面出
- 13. Azure,SLA和CAP理論
- 14. 是python str.split()不一致嗎?
- 15. C++ 11會導致我重寫下面的一些方法嗎?
- 16. FPS Cap仍然會導致閃爍
- 17. 這是Laravel會話處理不一致的bug嗎?
- 18. 命令總是在一個地方處理?
- 19. 這是一個JavaScript模板管理的理想方式嗎?
- 20. IMultiValueConverter的參數總是一樣嗎?
- 21. zlib:壓縮流總是一樣的嗎?
- 22. numpy獨一無二總是一樣嗎?
- 23. 這是內存管理方面的最佳鏈嗎?
- 24. 一個窗口可以總是在另一個窗口上面嗎?
- 25. 有什麼方法可以覆蓋cap deploy:setup任務嗎?
- 26. OCaml調用約定:這是一個精確的總結嗎?
- 27. 從正在返回的界面投射?它總是安全嗎?
- 28. CAP定理的哪個部分做Cassandra犧牲,爲什麼?
- 29. PHP條件重定向總是重定向到同一頁面
- 30. 清理Zookeeper數據目錄