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 支援同一服務向多註冊中心同時註冊,或者不同服務分別註冊到不同的註冊中心上去,甚...