基於ZooKeeper實現簡單的配置中心

ZooKeeper節點的類型分爲以下幾類:

    1. 持久節點:節點創建後就一直存在,直到有刪除操作來主動刪除該節點

    2. 臨時節點:臨時節點的生命週期和創建該節點的客戶端會話綁定,即如果客戶端會話失效(客戶端宕機或下線),這個節點自動刪除 

    3. 時序節點:創建節點是可以設置這個屬性,ZooKeeper會自動爲給定的節點加上一個數字後綴,作爲新的節點名。數字後綴的範圍是整型的最大值

     4. 臨時性時序節點:同時具備臨時節點與時序節點的特性,主要用於分佈式鎖的實現

 

    配置中心使用ZooKeeper的持久節點的特性,將配置信息寫入到持久節點。客戶端啓動時,從ZooKeeper讀取配置信息,進而初始化內部資源,達到配置統一管理的目的。再結合ZooKeeper的Watch特性,配置信息變化實時推送到客戶端,即時生效,無需重啓客戶端,達到配置熱更新的效果。

 

    基於ZooKeeper實現簡易配置中心的實例代碼如下:

 

往服務端寫入配置,代碼如下:

 

客戶端從ZooKeeper查詢配置,代碼如下:

 

以上就是簡單的配置中心實現樣例。但是還存在以下改進空間:

1.沒有對數據變化進行監聽,需要在數據變化時實時獲取新的配置。(注:Zookeeper的API中的watch只能消費一次,需循環設置監聽)

2.可以使用ZKClient或者Curator等ZooKeeper客戶端工具,解決了非常底層的細節開發工作,包括連接重連、反覆註冊Watcher和NodeExistsException異常等

 

 

 

歡迎關注我的微信公衆號(Sunnick,請掃碼關注),隨時留言交流~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章