前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。
zookeeper 注冊中心
Zookeeper?是 Apacahe Hadoop 的子項目,是一個樹型的目錄服務,支持變更推送,適合作為 Dubbo 服務的注冊中心,工業強度較高,可用于生產環境,并推薦使用?1。
流程說明:
- 服務提供者啟動時: 向?
/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>
或直接下載。
Dubbo 支持 zkclient 和 curator 兩種 Zookeeper 客戶端實現:
使用 zkclient 客戶端
從?2.2.0
?版本開始缺省為 zkclient 實現,以提升 zookeeper 客戶端的健狀性。zkclient?是 Datameer 開源的一個 Zookeeper 客戶端實現。
缺省配置:
<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>
使用 curator 客戶端
從?2.3.0
?版本開始支持可選 curator 實現。Curator?是 Netflix 開源的一個 Zookeeper 客戶端實現。
如果需要改為 curator 實現,請配置:
<dubbo:registry ... client="curator" />
或:
dubbo.registry.client=curator
或:
zookeeper://10.20.153.10:2181?client=curator
需依賴或直接下載:
<dependency><groupId>com.netflix.curator</groupId><artifactId>curator-framework</artifactId><version>1.1.10</version>
</dependency>
Zookeeper 單機配置:
<dubbo:registry address="zookeeper://10.20.153.10:2181" />
或:
<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" />
或:
<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" />
zookeeper 安裝
安裝方式參見:?Zookeeper安裝手冊,只需搭一個原生的 Zookeeper 服務器,并將?Quick Start?中 Provider 和 Consumer 里的?conf/dubbo.properties
?中的?dubbo.registry.addrss
?的值改為?zookeeper://127.0.0.1:2181
?即可使用。
可靠性聲明
阿里內部并沒有采用 Zookeeper 做為注冊中心,而是使用自己實現的基于數據庫的注冊中心,即:Zookeeper 注冊中心并沒有在阿里內部長時間運行的可靠性保障,此 Zookeeper 橋接實現只為開源版本提供,其可靠性依賴于 Zookeeper 本身的可靠性。
兼容性聲明
因?2.0.8
?最初設計的 zookeeper 存儲結構不能擴充不同類型的數據,2.0.9
?版本做了調整,所以不兼容,需全部改用?2.0.9
?版本才行,以后的版本會保持兼容?2.0.9
。2.2.0
?版本改為基于 zkclient 實現,需增加 zkclient 的依賴包,2.3.0
?版本增加了基于 curator 的實現,作為可選實現策略。
1. 建議使用?2.3.3
?以上版本的 zookeeper 注冊中心客戶端?
?