在很多分布式系統中,集群管理依賴zookeeper的watcher機制。由於watcher對於節點事件(另一種是連線事件)是一次性的,即一旦觸發就失效,若想再次獲取相應zk路徑上的事件,需要再次設定watcher。如果zk路徑在兩次watcher之間發生了改變,client端是無法感知到的,這就是所謂zk事件丟失。
思路:我們使用zk是為了處理某種問題,解決丟事件的問題,不必非得嚴格使用watcher,只要能解決實際問題即可;所以一種可行的方法是:
1、採取削弱client端對於zookeeper服務的依賴性,將client端對zk事件的處理退化為輪詢,zk事件作為觸**詢的條件:
2、先設定watcher,後修改資料(建立路徑)等;
偽**如下:
package main
func zk_watch(conn zk.conn, path string) {
// a loop
go func() {
var exists bool
var ch
如何避免 如何避免鋼板彈簧受損
鋼板彈簧是卡車上的貴重部件之一,它一旦發生故障或損壞,會影響車輛的行駛和操縱,甚至發生意外事故,所以司機師傅們平時要養成良好的駕駛習慣,避免卡車鋼板彈簧受損。鋼板彈簧在卡車懸架系統中起著緩衝作用,還擔負傳遞所有各向的力和力矩,以及決定車輪運動的軌跡,起到導向的作用。相比於氣囊式懸架,鋼板彈簧因為其結...
如何避免 小紅書如何避免降權!
小紅書如何避免降權!如何避免降權,避開了雷區自然可以提公升權重。1 暱稱不能帶任何的營銷產品詞 2 發布的筆記要統一主題 做美妝的統一發布跟美妝相關的筆記,做旅行的就發布跟旅行相關的筆記,很多人做小紅書喜歡跟風,什麼熱門就發什麼,其實這是乙個大忌。同一主題風格才更有利於體現你的專業性,讓系統知道你的...
如何避免死鎖
如何避免死鎖 1 使用事務時,盡量縮短事務的邏輯處理過程,及早提交或回滾事務 2 設定死鎖超時引數為合理範圍,如 3分鐘 10分種 超過時間,自動放棄本次操作,避免程序懸掛 3 優化程式,檢查並避免死鎖現象出現 4 對所有的指令碼和sp都要仔細測試,在正是版本之前。5 所有的sp都要有錯誤處理 通過...