dubbo多註冊中心

2021-08-29 09:49:44 字數 3422 閱讀 2815

dubbo 支援同一服務向多註冊中心同時註冊,或者不同服務分別註冊到不同的註冊中心上去,甚至可以同時引用註冊在不同註冊中心上的同名服務。另外,註冊中心是支援自定義擴充套件的。

比如:中文站有些服務來不及在成都部署,只在杭州部署,而成都的其它應用需要引用此服務,就可以將服務同時註冊到兩個註冊中心。

<?xml version="1.0" encoding="utf-8"?>

比如:crm 有些服務是專門為國際站設計的,有些服務是專門為中文站設計的

<?xml version="1.0" encoding="utf-8"?>

比如:crm 需同時呼叫中文站和國際站的 pc2 服務,pc2 在中文站和國際站均有部署,介面及版本號都一樣,但連的資料庫不一樣。

<?xml version="1.0" encoding="utf-8"?>

如果只是測試環境臨時需要連線兩個不同註冊中心,使用豎號分隔多個不同註冊中心位址

<?xml version="1.0" encoding="utf-8"?>

(1)multicast 註冊中心multicast 註冊中心不需要啟動任何中心節點,只要廣播位址一樣,就可以互相發現。

提供方啟動時廣播自己的位址

消費方啟動時廣播訂閱請求

提供方收到訂閱請求時,單播自己的位址給訂閱者,如果設定了 unicast=false,則廣播給訂閱者

消費方收到提供方位址時,連線該位址進行 rpc 呼叫。

配置

(2)zookeeper 註冊中心zookeeper 是 apacahe hadoop 的子專案,是乙個樹型的目錄服務,支援變更推送,適合作為 dubbo 服務的註冊中心,工業強度較高,可用於生產環境,並推薦使用

流程說明:

服務提供者啟動時: 向 /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 的根節點,不設定將使用無根樹

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

使用

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

使用 redis 的 key/map 結構儲存資料結構:主 key 為服務名和型別

map 中的 key 為 url 位址

map 中的 value 為過期時間,用於判斷髒資料,髒資料由監控中心刪除

使用 redis 的 publish/subscribe 事件通知資料變更:

通過事件的值區分事件型別:register, unregister, subscribe, unsubscribe

普通消費者直接訂閱指定服務提供者的 key,只會收到指定服務的 register, unregister 事件

監控中心通過 psubscribe 功能訂閱 /dubbo/*,會收到所有服務的所有變更事件

呼叫過程:

服務提供方啟動時,向 key:/dubbo/com.foo.barservice/providers 下,新增當前提供者的位址

並向 channel:/dubbo/com.foo.barservice/providers 傳送 register 事件

服務消費方啟動時,從 channel:/dubbo/com.foo.barservice/providers 訂閱 register 和 unregister 事件

並向 key:/dubbo/com.foo.barservice/providers 下,新增當前消費者的位址

服務消費方收到 register 和 unregister 事件後,從 key:/dubbo/com.foo.barservice/providers 下獲取提供者位址列表

服務監控中心啟動時,從 channel:/dubbo/* 訂閱 register 和 unregister,以及 subscribe 和unsubsribe事件

服務監控中心收到 register 和 unregister 事件後,從 key:/dubbo/com.foo.barservice/providers 下獲取提供者位址列表

服務監控中心收到 subscribe 和 unsubsribe 事件後,從 key:/dubbo/com.foo.barservice/consumers 下獲取消費者位址列表

****** 註冊中心本身就是乙個普通的 dubbo 服務,可以減少第三方依賴,使整體通訊方式一致。

配置

將 ****** 註冊中心暴露成 dubbo 服務:

<?xml version="1.0" encoding="utf-8"?>

引用 ****** registry 服務:

或者:

或者:

Dubbo多註冊中心

1 建立工程 直接複製05 provider group工程,並命名為08 provider registers 2 修改配置檔案 1 建立工程 直接複製05 consumer group工程,並命名為08 consumer registers 2 修改配置檔案 對於消費者工程,用到哪個註冊中心了,...

Dubbo多註冊中心支援

dubbo版本 2.6.5 根據dubbo官方文件,可以發現dubbo支援multicast zookeeper nacos redis 等註冊中心,dubbo官方推薦使用zookeeper註冊中心 zookeeper 是 apacahe hadoop 的子專案,是乙個樹型的目錄服務,支援變更推送,...

Dubbo 3 多 註冊中心

dubbo支援的註冊中心 dubbo支援四種註冊中心。zookeeper註冊中心,multicast註冊中心 不需要啟動任何中心節點,只要廣播位址一樣,就可以互相發現 redis註冊中心,註冊中心。多註冊中心 dubbo 支援同一服務向多註冊中心同時註冊,或者不同服務分別註冊到不同的註冊中心上去,甚...