Redis 注冊中心

2022-04-22 11:09 更新

基于 Redis(Redis 是一個高效的 KV 存儲服務(wù)器)實現(xiàn)的注冊中心。

提示
從 ?2.1.0? 版本開始支持。
Redis 過期數(shù)據(jù)通過心跳的方式檢測臟數(shù)據(jù),服務(wù)器時間必須同步,并且對服務(wù)器有一定壓力,否則過期檢測會不準(zhǔn)確

/user-guide/images/dubbo-redis-registry.jpg

使用 Redis 的 Key/Map 結(jié)構(gòu)存儲數(shù)據(jù)結(jié)構(gòu):

  • 主 Key 為服務(wù)名和類型
  • Map 中的 Key 為 URL 地址
  • Map 中的 Value 為過期時間,用于判斷臟數(shù)據(jù),臟數(shù)據(jù)由監(jiān)控中心刪除 [^3]

使用 Redis 的 Publish/Subscribe 事件通知數(shù)據(jù)變更:

  • 通過事件的值區(qū)分事件類型:register, unregister, subscribe, unsubscribe
  • 普通消費者直接訂閱指定服務(wù)提供者的 Key,只會收到指定服務(wù)的 register, unregister 事件
  • 監(jiān)控中心通過 psubscribe 功能訂閱 /dubbo/*,會收到所有服務(wù)的所有變更事件

調(diào)用過程:

  1. 服務(wù)提供方啟動時,向 Key:/dubbo/com.foo.BarService/providers 下,添加當(dāng)前提供者的地址
  2. 并向 Channel:/dubbo/com.foo.BarService/providers 發(fā)送 register 事件
  3. 服務(wù)消費方啟動時,從 Channel:/dubbo/com.foo.BarService/providers 訂閱 register 和 unregister 事件
  4. 并向 Key:/dubbo/com.foo.BarService/consumers 下,添加當(dāng)前消費者的地址
  5. 服務(wù)消費方收到 register 和 unregister 事件后,從 Key:/dubbo/com.foo.BarService/providers 下獲取提供者地址列表
  6. 服務(wù)監(jiān)控中心啟動時,從 Channel:/dubbo/* 訂閱 register 和 unregister,以及 subscribe 和unsubsribe 事件
  7. 服務(wù)監(jiān)控中心收到 register 和 unregister 事件后,從 Key:/dubbo/com.foo.BarService/providers 下獲取提供者地址列表
  8. 服務(wù)監(jiān)控中心收到 subscribe 和 unsubsribe 事件后,從 Key:/dubbo/com.foo.BarService/consumers 下獲取消費者地址列表

配置

<dubbo:registry address="redis://10.20.153.10:6379" />

<dubbo:registry address="redis://10.20.153.10:6379?backup=10.20.153.11:6379,10.20.153.12:6379" />

<dubbo:registry protocol="redis" address="10.20.153.10:6379" />

<dubbo:registry protocol="redis" address="10.20.153.10:6379,10.20.153.11:6379,10.20.153.12:6379" />

選項

  • 可通過 <dubbo:registry group="dubbo" /> 設(shè)置 redis 中 key 的前綴,缺省為 dubbo。
  • 可通過 <dubbo:registry cluster="replicate" /> 設(shè)置 redis 集群策略,缺省為 failover:failover: 只寫入和讀取任意一臺,失敗時重試另一臺,需要服務(wù)器端自行配置數(shù)據(jù)同步replicate: 在客戶端同時寫入所有服務(wù)器,只讀取單臺,服務(wù)器端不需要同步,注冊中心集群增大,性能壓力也會更大

可靠性聲明

阿里內(nèi)部并沒有采用 Redis 做為注冊中心,而是使用自己實現(xiàn)的基于數(shù)據(jù)庫的注冊中心,即:Redis 注冊中心并沒有在阿里內(nèi)部長時間運行的可靠性保障,此 Redis 橋接實現(xiàn)只為開源版本提供,其可靠性依賴于 Redis 本身的可靠性。

安裝

安裝方式參見: Redis安裝手冊,只需搭一個原生的 Redis 服務(wù)器,并將 Quick Start 中 Provider 和 Consumer 里的 conf/dubbo.properties 中的 dubbo.registry.address 的值改為 redis://127.0.0.1:6379 即可使用。



以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號