天天看點

Dubbo 學習(4)— zookeeper 注冊中心的使用

Zookeeper 是 Apacahe Hadoop 的子項目,是一個樹型的目錄服務,支援變更推送,适合作為 Dubbo 服務的注冊中心,工業強度較高,可用于生産環境,并推薦使用。
Dubbo 學習(4)— 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.4.11</version>              
    <type>pom</type>                       
</dependency>                              
           

或直接下載下傳。

Dubbo 支援 zkclient 和 curator 兩種 Zookeeper 用戶端實作:

使用 zkclient 用戶端

從 2.2.0 版本開始預設為 zkclient 實作,以提升 zookeeper 用戶端的健狀性。zkclient 是 Datameer 開源的一個 Zookeeper 用戶端實作。

預設配置:

或:

dubbo.registry.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
           

或:

需依賴或直接下載下傳:

<dependency>
    <groupId>com.netflix.curator</groupId>
    <artifactId>curator-framework</artifactId>
    <version>1.1.10</version>
</dependency>
           

Zookeeper 單機配置:

或:

Zookeeper 叢集配置:

或:

同一 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 伺服器,并将 Provider 和 Consumer 裡的

conf/dubbo.properties

中的

dubbo.registry.addrss

的值改為 zookeeper://127.0.0.1:2181 即可使用。