2015-06-21 77 views
1

動物園管理員手錶documentation statesZookeeper Watches系統是否有錯誤,或者這是CAP定理的限制嗎?

「的客戶端將看到一個Z序節點是看到對應於該Z序節點的新數據之前看手錶的事件。」此外,「由於手錶是一次性觸發器,並且在獲取事件和發送新請求以獲得手錶之間存在延遲,因此無法可靠地查看ZooKeeper中節點發生的每個變化。」

問題是,我們無法保證您會收到手錶通知。

這一點很重要,因爲在像Clojure的Avout一個系統正,你想模仿Clojure的Software Transactional Memory,在使用Zookeeper網絡。這依賴於每個變化都有一個監視通知。

現在我試圖解決這是一個編碼缺陷還是一個基礎的計算機科學問題(即CAP Theorem)。

我的問題是:Zookeeper Watches系統有錯誤嗎?還是這是CAP定理的限制?

回答

0

這似乎是ZooKeeper實現手錶的一種限制,而不是CAP定理的限制。有一項開放功能要求爲ZooKeeper添加連續監視:https://issues.apache.org/jira/browse/ZOOKEEPER-1416

etcd具有使用長輪詢的watch函數。您需要考慮的限制是在接收第一個長輪詢結果和重新輪詢之間可能發生多個事件。這大致類似於ZooKeeper的問題。然而,他們有一個解決方案:

但是,watch命令可以做的比這更多。使用索引[傳遞我們見過的最後一個索引],我們可以觀察過去發生的命令。這對確保您不會錯過watch命令之間的事件很有用。

curl -L 'http://127.0.0.1:4001/v2/keys/foo?wait=true&waitIndex=7' 
相關問題