Zookeeper命名服務

前言

命名服務,簡單來說就是對某一資源命名,使其可以通過路徑名稱對資源唯一定位,zookeeper節點具有唯一性,可以保證ZNode在分佈式系統中唯一。

應用方向

1.提供類似JNDI的功能

利用zookeeper中的樹形分層結構,可以把系統中的各種服務的名稱,地址以及目錄信息存放在zookeeper中,需要的時候去zookeeper中去讀取。

2.利用zookeeper中的順序節點的特性,製作分佈式的序列號生成器(ID生成器)

在往數據庫中插入數據,通常是要有一個ID號,在單機環境下,可以利用數據庫的主鍵自動生成id號,但是這種在分佈式環境下就無法使用了,可以使用UUID,但是UUID有一個缺點,就是沒有什麼規律很難理解。使用zookeeper的命名服務可以生成有順序的容易理解的,支持分佈式的編號。

例子

1.命名服務之統一的資源定位獲取

我利用zookeeper的註冊中心功能,將我的zero服務註冊到zookeeper,默認的服務註冊中心根路徑是/services,zero是我的服務名稱,zero子節點是具體的實例,這個實例節點上存儲的是具體的服務數據,如下圖所示,只要約定好路徑,可以在任何服務下獲取到這個路徑資源的信息。

Zookeeper命名服務

Talk is cheap,show me the code...

Zookeeper命名服務

控制檯輸出,就獲取到了這個資源的數據信息:

Zookeeper命名服務

2.命名服務之分佈式的序列號生成器

直接上代碼:

Zookeeper命名服務

結果:

Zookeeper命名服務


分享到:


相關文章: