1. 程式人生 > >服務和負載均衡的實現(zookeeper)

服務和負載均衡的實現(zookeeper)

Zookeeper

 

1Zookeeper是什麼?

Zookeeper是一個大型分散式系統的可靠地協調系統,提供的功能包括配置維護,名字服務,分散式同步,組服務等。Zeepkeeper是可以通過叢集複製的,叢集間通過自動廣播協議來保持資料的一致性。該協議包括leader electionatomic broadcas階段。叢集中將選出一個leader,其他的機器則稱為follower,所有的寫操作都被傳送給leader,並通過broadcas將所有的更新告訴follower。當leader崩潰或者失去大量follower時,需要重新選舉出一個leader,讓所有的伺服器都恢復正常的狀態。當

leader被選舉出來,且大多數伺服器完成了和leader的狀態同步後,leader election的過程就完成了。接下來atomic broadcas同步leaderfollower之間的資訊,保證leaderfollower具有相同的系統狀態。

2、使用Zookeeper的好處?

Zookeeper的核心類似於一個檔案系統,提供一些簡單的操作和一些附加的抽象,如znode的排序於watch機制,並且叢集的部署方式使其具有較高的可靠性。Zookeeper的協作過程簡化了鬆散耦合系統之間的互動,即使參與者彼此不知道對方的存在,也能夠互相發現並且完成互動。

3、zookeeper簡單使用。

Zookeeper包含

建立一個node節,

刪除一個node節點,

設定和獲取節點內容,

新增子節點,

判斷節點是否存在,

以及當節點的狀態發生變化時,可以通過watcher機制實現,讓客戶端得到相應的通知(類似於觀察者模式)。

4、路由和負載均衡的實現。

zookeeper中,一但伺服器與zookeeper叢集斷開連線,znode節點已經不存在,此時通過註冊相應的watcher機制,服務消費者能夠第一時間獲取服務提供者資訊的變更。利用znode的特點和watcher機制將其作為動態註冊和獲取服務資訊的配置中心,統一管理服務名稱和其對應的伺服器列表,能夠實時的感知到後端伺服器的狀態,從而保持服務配置資訊能夠一致以及進行簡單的擴容。

Zookeeper類似於一棵節點樹,當服務提供者啟動時,將伺服器的名稱、地址以節點的資訊新增到配置中心,而服務消費中通過伺服器名稱以及配置中心來獲得需要呼叫的服務節點下的服務地址,再利用負載均衡演算法選取其中的某一臺伺服器進行呼叫。