Zookeeper場景描述node
在分佈式的應用中,咱們常常同時啓動多個server,調用方(client) 選擇其中之一發起請求。分佈式
分佈式應用必須考慮高可用性和可擴展性:server的應用進程可能會崩潰。或者server自己可能也會dwon機。當server不夠時,也有可能增長server的數量,總而言之,server列表並不是一成不變的,而是一直處於動態的增減中。server
那麼client熱河才能實時的更新server列表呢?解決的方案不少,Zookeeper是一個方案。進程
思路:io
啓動server時候,在Zookeeper的某個znode(假設爲/sgroup )下建立一個子階段。所建立的子節點的類型應該爲ephemeral,這樣子依賴,若是server 進程崩潰或者serverdown機,與Zookeeper鏈接的 Session就結束了,那麼其的全部建立的子節點會被 Zookeeper自動刪除,當崩潰的server恢復後,或者新增server時候,一樣須要在/sgroup 節點下建立新的子節點。cli
對於client。只需註冊/sgroup 子節點的監聽,當 。/sgroup 下的子節點增長或者減小,Zookeeper會通知client,此時client更新server列表。擴展