Zookeeper筆記(四)Zookeeper在Dubbo中的應用


Dubbo的架構

節點角色說明:

Provider: 暴露服務的服務提供方。
Consumer: 調用遠程服務的服務消費方。
Registry: 服務注冊與發現的注冊中心。
Monitor: 統計服務的調用次調和調用時間的監控中心。
Container: 服務運行容器。
調用關系說明:

0. 服務容器負責啟動,加載,運行服務提供者。
1. 服務提供者在啟動時,向注冊中心注冊自己提供的服務。
2. 服務消費者在啟動時,向注冊中心訂閱自己所需的服務。
3. 注冊中心返回服務提供者地址列表給消費者,如果有變更,注冊中心將基於長連接推送變更數據給消費者。
4. 服務消費者,從提供者地址列表中,基於軟負載均衡算法,選一台提供者進行調用,如果調用失敗,再選另一台調用。
5. 服務消費者和提供者,在內存中累計調用次數和調用時間,定時每分鍾發送一次統計數據到監控中心。

Dubbo推薦使用Zookeeper注冊中心

流程說明:

服務提供者啟動時
向/dubbo/com.foo.BarService/providers目錄下寫入自己的URL地址。
服務消費者啟動時
訂閱/dubbo/com.foo.BarService/providers目錄下的提供者URL地址。
並向/dubbo/com.foo.BarService/consumers目錄下寫入自己的URL地址。
監控中心啟動時
訂閱/dubbo/com.foo.BarService目錄下的所有提供者和消費者URL地址。

支持以下功能:

當提供者出現斷電等異常停機時,注冊中心能自動刪除提供者信息。
當注冊中心重啟時,能自動恢復注冊數據,以及訂閱請求。
當會話過期時,能自動恢復注冊數據,以及訂閱請求。
當設置<dubbo:registry check="false" />時,記錄失敗注冊和訂閱請求,后台定時重試。
可通過<dubbo:registry username="admin" password="1234" />設置zookeeper登錄信息。
可通過<dubbo:registry group="dubbo" />設置zookeeper的根節點,不設置將使用無根樹。
支持*號通配符<dubbo:reference group="*" version="*" />,可訂閱服務的所有分組和所有版本的提供者。

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

<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.3.3</version>
</dependency>

  

或直接下載:http://repo1.maven.org/maven2/org/apache/zookeeper/zookeeper

zkclient客戶端實現:

ZKClient Zookeeper Registry

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

ZKClient是Datameer開源的一個Zookeeper客戶端實現,開源比較早,參見:https://github.com/sgroschupf/zkclient

缺省配置:

<dubbo:registry ... client="zkclient" />

或:

dubbo.registry.client=zkclient

或:

zookeeper://10.20.153.10:2181?client=zkclient

需依賴:

<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>

  

或直接下載:http://repo1.maven.org/maven2/com/github/sgroschupf/zkclient

Zookeeper單機配置:

<dubbo:registry address="zookeeper://10.20.153.10:2181" />
Or:
<dubbo:registry protocol="zookeeper" address="10.20.153.10:2181" />

  

Zookeeper集群配置:

<dubbo:registry address="zookeeper://10.20.153.10:2181?backup=10.20.153.11:2181,10.20.153.12:2181" />
Or:
<dubbo:registry protocol="zookeeper" address="10.20.153.10:2181,10.20.153.11:2181,10.20.153.12:2181" />

  

同一Zookeeper,分成多組注冊中心:

<dubbo:registry id="chinaRegistry" protocol="zookeeper" address="10.20.153.10:2181" group="china" />
<dubbo:registry id="intlRegistry" protocol="zookeeper" address="10.20.153.10:2181" group="intl" />

  

轉自 Dubbo用戶指南


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM