您好,登錄后才能下訂單哦!
這篇文章主要介紹“Zookeeper的觀察者是什么意思”,在日常操作中,相信很多人在Zookeeper的觀察者是什么意思問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Zookeeper的觀察者是什么意思”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
閱讀本文之前,推薦閱讀:
基于zookeeper leader選舉方式一
Kafka源碼系列之源碼分析zookeeper在kafka的作用
回顧一下Zookeeper的運行時的角色。
觀察者的設計是希望能動態擴展zookeeper集群又不會降低寫性能。
雖然通過讓客戶端直接連接到集群的投票成員,ZooKeeper也表現得非常好,但是這種架構使得很難擴展到有大量的客戶端情況。問題是,隨著我們添加更多投票成員,寫入性能也會隨著下降。這是因為寫操作需要(通常)需要集群中至少一半的節點投票達成一致,因此隨著更多投票者的加入,投票的成本會顯著增加。
這里引入一種新zookeeper節點類型,叫做觀察者,觀察者的引入幫助解決了上面的問題同時大大增加了zookeeper的動態擴展能力。觀察者不參與投票,只聽取投票結果。除了這個簡單的區別,Observers的功能與Followers完全相同 - 客戶端可以連接到它們并向它們發送讀寫請求。Observer會像follower一樣將消息轉發給leader,但是Observer只會聽取投票結果,不參與投票。由于這點,我們可以增加任意數量的Observer,同時不會影響我們集群的性能。
Observer還有其它優點。因為他們不投票,所以他們不是ZooKeeper集群的重要組成部分。 因此,它們可以失敗,或者與集群斷開連接,而不會損害ZooKeeper服務的可用性。對用戶的好處是Observer相比Follower來說更能通過不太可靠的網絡鏈接進行連接。實際上,Observers可用于與另一個數據中心的ZooKeeper服務器通信。Observers的客戶端可以快速讀取,因為所有讀取都在本地提供,并且寫入消耗最小的網絡流量,因為在沒有投票協議的情況下所需的消息數量較少。
在zookeeper集群中使用觀察者是非常簡單的,僅僅需要修改配置文件里的兩個配置即可。
在所有將會配置為zookeeper觀察者的節點,添加下面一行:
peerType=observer
這行配置告訴zookeeper這臺服務器將會成為一個Observers。
其次,在所有的服務器節點,在server定義處需要在末尾增加:observer。例如:
server.1:localhost:2181:3181:observer
這會告訴其它服務server.1是一個observer,不會參與投票。
運行下面的命令即可鏈接到集群:
bin/zkCli.sh -server localhost:2181
關于observer下面舉兩個使用案例。實際上,無論您希望擴展ZooKeeper集群的客戶端數量,還是希望將集群的關鍵部分與處理客戶端請求的負載隔離開來,Observers都是一個很好的架構選擇。
1, 作為一個數據中心橋梁(datacenterbridge):為兩個數據中心構建同一套zookeeper集群是會費很大勁的,因為數據中心之間網絡延遲的高度變化可能會導致故障檢測的誤報和集群分區。但是如果集群完全部署到一個數據中心,另一個數據中心用Observers,則分區問題不會出現了。Client依然可以看到和發布提案。
2,作為消息總線的鏈接:一些公司表示有興趣將ZK用作持久可靠消息總線的組件。 觀察者將為這項工作提供一個自然的集成點:插件機制可用于將觀察者看到的提案流附加到發布 - 訂閱系統,同樣不加載核心集群。
到此,關于“Zookeeper的觀察者是什么意思”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。