【Dubbo3 終極特性】「雲原生三中心架構」帶你探索 Dubbo3 體系下的設定中心和後設資料中心、註冊中心的原理及開發實戰(中)

2023-01-17 15:00:28

承接上文

通過之前的【Dubbo3終極特性】「雲原生三中心架構」帶你探索 Dubbo3 體系下的設定中心和後設資料中心、註冊中心的原理及開發實戰(上),讓我們對Dubbo3的三中心架構體系有了一定的認識和了解。

Dubbo3的三中心部署架構

回顧一下部署架構(註冊中心、設定中心、後設資料中心),瞭解Dubbo3的三大中心化元件,它們各自的職責、工作方式。

微服務架構,Dubbo SDK跟隨著微服務元件被部署在分散式叢集各個位置,為了在分散式環境下實現各個微服務元件間的共同作業。

Dubbo定義了一些中心化元件

  • 註冊中心:協調 Consumer 與 Provider 之間的地址註冊與發現
  • 設定中心:
    • 儲存Dubbo3啟動階段的全域性設定,保證設定的跨環境共用與全域性一致性。
    • 負責服務治理規則(路由規則、動態設定等)的儲存與推播。
  • 後設資料中心:
    • 接收Provider上報的服務介面後設資料,為Admin等控制檯提供運維能力(如:服務測試、介面檔案等)。
    • 服務發現機制的補充,提供額外的介面/方法級別設定資訊的同步能力,相當於註冊中心的額外擴充套件。

上圖完整的描述了Dubbo3微服務元件與各個中心的互動過程。

使用Nacos服務建立三中心體系

開展我們啟動Nacos服務的搭建過程,此部分我們可以參考之前的文章:【深入淺出 Dubbo3 原理及實戰】「SpringCloud-Alibaba 系列」基於 Nacos 作為註冊中心進行釋出 SpringCloud-alibaba 生態的 RPC 介面實戰,進行部署對應的Nacos即可。

Nacos對接Dubbo的註冊中心、設定中心和後設資料中心

接下來我們需要針對於Nacos如何設定和對接我們的三中心體系進行相關的介紹和分析。Dubbo的註冊中心、設定中心和後設資料中心

Nacos如何對接Dubbo3的設定中心和後設資料中心

針對於Nacos對接註冊中心的方案之前我們已經對接過了,在這裡我們就不過多的贅述,我們目前主要針對於設定中心以及後設資料中心進行分析如何開發。

後設資料中心

首先我們需要針對於SpringBoot的專案的設定進行設定新增dubbo3的設定,進行設定maven依賴。

zookeeper的後設資料中心的設定(3.0.7的dubbo版本)
<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-metadata-report-zookeeper</artifactId>
    <version>3.0.7</version>
</dependency>
redis的後設資料中心的設定(3.0.7的dubbo版本)
<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-metadata-report-redis</artifactId>
</dependency>
nacos的後設資料中心的設定(3.0.7的dubbo版本)
<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-metadata-report-nacos</artifactId>
</dependency>

在這裡我們選擇的是nacos的設定,之後進行設定選擇,針對於application.properties檔案的設定如下:

後設資料中心的applicaion.properties設定
dubbo.metadata-report.address=nacos://${nacos.address:127.0.0.1}:8848?username=nacos&password=nacos
dubbo.metadata-report.retry-times=5
dubbo.metadata-report.retry-period=5000
dubbo.metadata-report.cycle-report=false

對應的常用設定:

  • dubbo.metadata-report.address:後設資料中心的地址,此時可以設定nacos的地址,nacos的地址為 nacos://ip:8848,代表dubbo會把nacos作為後設資料中心,進行上報對應的介面資訊和應用名稱關係等。

  • dubbo.metadata-report.retry-times: 後設資料中心的地址,如果上報資料之後,出現了失敗場景,會進行重試的次數,我們可以設定5次。,預設100

  • dubbo.metadata-report.retry-period: 重試執行的間隔時間,單位為毫秒,重試周期,預設3000ms。

  • dubbo.metadata-report.cycle-report: 定時重新整理,預設開啟(true),可以通過設定cycleReport=false進行關閉。

即可完成後設資料中心的對應的Dubbo3的對接設定。

設定中心

相比設定中心不支援redis,所以我們主要採用nacos去實現設定中心的掛載對接。

nacos的設定中心的設定(3.0.7的dubbo版本)
<dependency>
      <groupId>org.apache.dubbo</groupId>
      <artifactId>dubbo-configcenter-nacos</artifactId>
      <version>3.0.7</version>
 </dependency>
zookeeper的設定中心的設定(3.0.7的dubbo版本)
<dependency>
      <groupId>org.apache.dubbo</groupId>
      <artifactId>dubbo-configcenter-zookeeper</artifactId>
      <version>3.0.7</version>
 </dependency>
設定中心的applicaion.properties設定

zookeeper的設定

dubbo.config-center.address=zookeeper://${config-center.address:127.0.0.1}:2181

nacos的設定

dubbo.config-center.address=nacos://${nacos.address:127.0.0.1}:8848?username=nacos&password=nacos

即可完成對應的設定中心的設定機制

最後設定中心和後設資料中心對接Nacos內部的設定分析,大家可以嘗試設定一下看看對應的效果即可。下一篇文章會給大家展示效果。