Zookeeper在Dubbo中的應用

2021-08-07 19:26:51 字數 3640 閱讀 6100

**

摘要: zookeeper在dubbo中的應用 dubbo的架構 節點角色說明: provider: 暴露服務的服務提供方。consumer: 呼叫遠端服務的服務消費方。registry: 服務註冊與發現的註冊中心。

節點角色說明:

provider: 暴露服務的服務提供方。

consumer: 呼叫遠端服務的服務消費方。

registry: 服務註冊與發現的註冊中心。

monitor: 統計服務的呼叫次調和呼叫時間的監控中心。

container: 服務執行容器。

呼叫關係說明:

0. 服務容器負責啟動,載入,執行服務提供者。

1. 服務提供者在啟動時,向註冊中心註冊自己提供的服務。

2. 服務消費者在啟動時,向註冊中心訂閱自己所需的服務。

3. 註冊中心返回服務提供者位址列表給消費者,如果有變更,註冊中心將基於長連線推送變更資料給消費者。

4. 服務消費者,從提供者位址列表中,基於軟負載均衡演算法,選一台提供者進行呼叫,如果呼叫失敗,再選另一台呼叫。

5. 服務消費者和提供者,在記憶體中累計呼叫次數和呼叫時間,定時每分鐘傳送一次統計資料到監控中心。

流程說明:

服務提供者啟動時

向/dubbo/com.foo.barservice/providers目錄下寫入自己的url位址。

服務消費者啟動時

訂閱/dubbo/com.foo.barservice/providers目錄下的提供者url位址。

並向/dubbo/com.foo.barservice/consumers目錄下寫入自己的url位址。

監控中心啟動時

訂閱/dubbo/com.foo.barservice目錄下的所有提供者和消費者url位址。

支援以下功能:

當提供者出現斷電等異常停機時,註冊中心能自動刪除提供者資訊。

當註冊中心重啟時,能自動恢復註冊資料,以及訂閱請求。

當會話過期時,能自動恢復註冊資料,以及訂閱請求。

當設定時,記錄失敗註冊和訂閱請求,後台定時重試。

可通過設定zookeeper登入資訊。

可通過設定zookeeper的根節點,不設定將使用無根樹。

支援*號萬用字元,可訂閱服務的所有分組和所有版本的提供者。

在provider和consumer中增加zookeeper客戶端jar包依賴:

12

3

4

5

<dependency>

<groupid>org.apache.zookeeper

<artifactid>zookeeper

<version>3.3.3

zkclient客戶端實現:

zkclient zookeeper registry

從2.2.0版本開始預設為zkclient實現,以提公升zookeeper客戶端的健狀性。

zkclient是datameer開源的乙個zookeeper客戶端實現,開源比較早,參見:

預設配置:

或:dubbo.registry.client=zkclient

或:zookeeper:

需依賴:

12

3

4

5

<dependency>

<groupid>com.github.sgroschupf

<artifactid>zkclient

<version>0.1

zookeeper單機配置:

1

2

3

<dubbo:registryaddress="zookeeper:" />

or:

<dubbo:registryprotocol="zookeeper" address="10.20.153.10:2181" />

zookeeper集群配置:

1

2

3

<dubbo:registryaddress="zookeeper:?backup=10.20.153.11:2181,10.20.153.12:2181" />

or:

<dubbo:registryprotocol="zookeeper" address="10.20.153.10:2181,10.20.153.11:2181,10.20.153.12:2181" />

同一zookeeper,分成多組註冊中心:

1

2

<dubbo:registryid="chinaregistry" protocol="zookeeper" address="10.20.153.10:2181" group="china" />

<dubbo:registryid="intlregistry" protocol="zookeeper" address="10.20.153.10:2181" group="intl" />

zookeeper在dubbo中作用

最近在給一些人講架構的時候,常被問到乙個問題,dubbo與zk是什麼關係,所以今天我就來簡單整理一下 dubbo建議使用zk作為服務的註冊中心,當然也可以使用redis等等 我覺得這個很好理解哦,哪乙個服務得由哪個機器來提供必需得讓呼叫者知道.也就是ip與服務名稱的對應關係 dubbo服務提供者在z...

zooKeeper在dubbo中的應用

iscoder 2017 05 03 23 38 前面幾篇文章說了很多zookeeper的功能特性,zookeeper是乙個分布式應用下的分布式 開源的協調服務。說了那麼多,那麼到底在實際開發中,zookeeper是怎麼提供服務的呢?這篇文章小段就簡單講述一下zookeeper在dubbo中的應用,...

zookeeper在dubbo起了什麼作用

dubbo是動物.zookeeper是動物園的管理員!您可以把dubbo服務想象成學校裡的乙個學生,並且對應有乙個學號,zookeeper則是想象成乙個教務網管理系統。我們可以通過教務網管理系統,查詢到對應的學生。我們首先通過註冊入學,將學生和學號對應繫結。比方說專案是乙個分布式的專案,web層與 ...