zookeeper之watch事件延遲

孫悟空空發表於2014-05-17

1.watch事件延遲概念說明:watch事件非同步傳送至觀察者。節點的值被修改後,watch事件會發往觀察者,觀察者不會得知資料變化,直到接收到watch事件。如果在watch事件傳送給觀察者的過程中且還未到達觀察者時,該節點的值又被修改了,那麼watch事件到達觀察者時,節點值已經是第二次被修改的值了。

2.為了降低watch事件延遲帶來的資訊錯誤,有如下方法可以參考:減少修改節點值的使用者,一個節點多個觀察者是沒有問題的,儘量做到一個節點只有一個修改者。可能在實際應用中恰好我們需要這樣的機制,多個修改者通過修改一個節點值來通知一個觀察者來,觀察者針對節點的值做出響應。如下圖所示:



由於watch延遲,上圖結構容易引起誤差,可改為下圖所示:



這樣同樣實現了上面所說的需求,同時避免watch延遲帶來的誤差。由於ZooKeeper的靈活性,結合程式語言,可以構造更穩定的分散式結構。

3.總結

以上分析是自己一點點的小心得,希望能得到指正和意見,現在正在編寫這方面的程式,有什麼發現會及時和大家分享的。


相關文章