最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Dubbo注冊中心與服務(wù)發(fā)現(xiàn)詳解

 更新時間:2025年10月20日 10:03:15   作者:hello_zzw  
本文全面介紹了Dubbo注冊中心及服務(wù)發(fā)現(xiàn)機制,包括Zookeeper、Nacos、Multicast等多種注冊中心的配置方法、高可用特性及其在接口級和應(yīng)用級服務(wù)發(fā)現(xiàn)中的應(yīng)用,支持多注冊中心和高階服務(wù)治理能力,實現(xiàn)微服務(wù)的動態(tài)擴容和流量管控

注冊中心與服務(wù)發(fā)現(xiàn)

注冊中心概述

注冊中心是dubbo服務(wù)治理的核心組件,Dubbo依賴注冊中心的協(xié)調(diào)實現(xiàn)服務(wù)發(fā)現(xiàn),自動化的服務(wù)發(fā)現(xiàn)是微服務(wù)實現(xiàn)動態(tài)擴容、負載均衡、流量治理的基礎(chǔ)。

Dubbo的服務(wù)發(fā)現(xiàn)機制經(jīng)歷了Dubbo2時代的接口級服務(wù)發(fā)現(xiàn)、Dubbo3時代的應(yīng)用級服務(wù)發(fā)現(xiàn)。

基本使用

SpringBoot開發(fā):在application.yaml中添加registry配置

dubbo:
  registry:
    address: { protocol }://${cluster-address}
  • protocol:配置中心類型
  • cluster-address:注冊中心的集群地址,比如address: nacos://127.0.0.1:8848,如需要集群格式地址可使用backup參數(shù):address: nacos://localhost:8848?backup=localshot:8846,localshot:8847

配置中心與元數(shù)據(jù)中心

配置中心、元數(shù)據(jù)中心是實現(xiàn)Dubbo高階服務(wù)治理能力會依賴的組件,如流量管控規(guī)則等。

相比于注冊中心,這兩個組件的配置是可選的。

對于部分注冊中心類型(如Zookeeper、Nacos等),dubbo會默認同時將其用作元數(shù)據(jù)中心和配置中心(建議保持默認開啟狀態(tài))。

dubbo:
  registry:
    address: nacos://127.0.0.1:8848

dubbo解析后的默認行為:

dubbo:
 registry:
  address: nacos://localhost:8848
 config-center:
  address: nacos://localhost:8848
 metadata-report:
  address: nacos://localhost:8848

如果不想使用nacos作為配置中心,可以通過一下兩個參數(shù)來調(diào)整默認行為:

dubbo:
 registry:
  address: nacos://localhost:8848
  use-as-config-center: false
  use-as-metadata-report: false
 config-center:
   address: apollo://localhost:8848

Zookeeper 注冊中心

基本配置

Maven依賴

<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>${dubbo.version}</version>
</dependency>
<!-- 推薦 Zookeeper Server 3.8.0+ 版本 -->
<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-zookeeper-curator5-spring-boot-starter</artifactId>
    <version>${dubbo.version}</version>
</dependency>
<!-- 僅當 Zookeeper Server 版本是 3.4.x 及以下時,使用此依賴
<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-zookeeper-spring-boot-starter</artifactId>
    <version>${dubbo.version}</version>
</dependency>
-->

非SpringBoot項目

<dependencies>
   <dependency>
      <groupId>org.apache.dubbo</groupId>
       <version>${dubbo.version}</version>
       <artifactId>dubbo</artifactId>
   </dependency>
   <!-- This dependency helps to introduce Curator and Zookeeper dependencies that are necessary for Dubbo to work with zookeeper as transitive dependencies. -->
   <!-- 僅當 Zookeeper Server 版本是 3.4.x 及以下時,使用此依賴 -->
   <dependency>
       <groupId>org.apache.dubbo</groupId>
       <artifactId>dubbo-dependencies-zookeeper</artifactId>
       <version>${dubbo.version}</version>
       <type>pom</type>
   </dependency>
   <!-- 僅當 Zookeeper Server 版本是 3.5.x 及以上時,使用此依賴
	<dependency>
		<groupId>org.apache.dubbo</groupId>
		<artifactId>dubbo-dependencies-zookeeper-curator5</artifactId>
		<version>${dubbo.version}</version>
		<type>pom</type>
	</dependency>
	-->
</dependencies>

Zookeeper版本選擇

Dubbo3 3.3 版本及以上

Zookeeper Server 版本Dubbo依賴Dubbo Starter 依賴(SpringBoot用戶)
3.4.x 及以下dubbo-dependencies-zookeeperdubbo-zookeeper-spring-boot-starter
3.5.x 及以上dubbo-dependencies-zookeeper-curator5dubbo-zookeeper-curator5-spring-boot-starter

Dubbo3 3.2 及以下、Dubbo2 2.7.x

Zookeeper Server 版本Dubbo依賴Dubbo Starter 依賴(SpringBoot用戶)
3.4.x 及以下dubbo-dependencies-zookeeper不支持(自行管理)
3.5.x 及以上不支持(自行管理)不支持(自行管理)

配置并啟用Zookeeper

# application.yml
dubbo:
 registry:
   address: zookeeper://localhost:2181

高級配置

認證與鑒權(quán)

如果Zookeeper開啟認證,

Dubbo支持指定username、password的方式傳入身份標識·。

# application.yml
dubbo:
 registry:
  address: zookeeper://localhost:2181
  username: hello
  password: 123456

可以將參數(shù)擴展在address上

# application.yml
dubbo:
 registry:
  address: zookeeper://hello:123456@localhost:2181

分組隔離

通過制定group屬性,可以在同一個zookeeper集群內(nèi)實現(xiàn)微服務(wù)地址的邏輯隔離。

dubbo:
  registry:
    address: zookeeper://127.0.0.1:2181
    group: zookeeper-pre

其它配置

dubbo:
  registry:
    address: zookeeper://127.0.0.1:2181
    timeout: 30 * 1000 # 連接超時時間,默認 30s
    session: 60 * 1000 # 會話超時時間,默認 60s

工作原理

Zookeeper注冊中心實現(xiàn)支持一下高可用能力:

  • 當提供者出現(xiàn)斷電等異常停機時,注冊中心能自動刪除提供者信息。
  • 當注冊中心重啟時,能自動恢復(fù)注冊數(shù)據(jù),以及訂閱請求。
  • 當回話過期時,能自動恢復(fù)注冊數(shù)據(jù),以及訂閱請求。
  • 當設(shè)置registry.check=false時,記錄失敗注冊和訂閱請求,后臺定時重試。

接口級服務(wù)發(fā)現(xiàn)

  1. 服務(wù)提供者啟動時,向/dubbo/com.doudou.demo.api.DemoService/providers目錄下寫入自己的URL地址。
  2. 服務(wù)消費者啟動時,訂閱/dubbo/com.doudou.demo.api.DemoService/providers目錄下提供的URL地址。并向/dubbo/com.doudou.demo.api.DemoService/consumers目錄下寫入自己的URL地址。
  3. 監(jiān)控中心啟動時,訂閱/dubbo/com.doudou.demo.api.DemoService目錄下的所有提供者和消費者URL地址。

可通過registry.group設(shè)置zookeeper的根節(jié)點,不配置使用默認的/dubbo根節(jié)點

應(yīng)用級服務(wù)發(fā)現(xiàn)

應(yīng)用級服務(wù)發(fā)放以應(yīng)用名為粒度分發(fā)地址列表。服務(wù)提供者啟動著啟動時,向/service/app目錄下寫入自己的URL地址。

應(yīng)用級的URL只包含一些實例級別的參數(shù),如tri://ip:port?region=hangzhou。

可通過registry.group設(shè)置zookeeper的根節(jié)點,默認使用/services根節(jié)點。

在應(yīng)用級服務(wù)發(fā)現(xiàn)模型中,接口級別的配置信息由服務(wù)提供者與服務(wù)消費者之間自行同步協(xié)商,不再由注冊中心服務(wù)同步,從而大大減少了注冊中心的地址同步壓力。

接口應(yīng)用映射

在應(yīng)用級服務(wù)發(fā)現(xiàn)中,zookeeper注冊中心還會存儲一份額外的元數(shù)據(jù),用于解決接口名到應(yīng)用名之間的映射。存儲路徑:/dubbo/mapping/service。

元數(shù)據(jù)

如果使用應(yīng)用級服務(wù)發(fā)現(xiàn)的集中式元數(shù)據(jù)模式,默認是點對點模式,可通過dubbo.registry.metadata-type=remote開啟。在zookeeper服務(wù)/dubbo/metadata目錄下會保存每個應(yīng)用對于機器的元數(shù)據(jù)信息。

Nacos注冊中心

基本配置

maven依賴

springboot應(yīng)用

<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>3.3.0</version>
</dependency>
<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-nacos-spring-boot-starter</artifactId>
    <version>3.3.0</version>
</dependency>

非springboot應(yīng)用

<dependencies>
    <dependency>
        <groupId>org.apache.dubbo</groupId>
        <artifactId>dubbo</artifactId>
        <version>3.3.0</version>
    </dependency>
    <dependency>
      <groupId>com.alibaba.nacos</groupId>
      <artifactId>nacos-client</artifactId>
      <version>2.1.0</version>
    </dependency>
</dependencies>

Nacos版本

Dubbo推薦Nacos版本Nacos兼容范圍
3.3.02.3.02.x
3.2.212.1.02.x
3.1.112.0.92.x
3.0.102.0.92.x
2.7.211.x最新版本1.x
2.6.01.x最新版本1.x

配置并啟用Nacos

# application.yml (Spring Boot)
dubbo:
 registry:
   address: nacos://localhost:8848

高級配置

認證

# application.yml (Spring Boot)
dubbo:
 registry:
   address: nacos://localhost:8848?username=nacos&password=nacos

# dubbo.properties
dubbo.registry.address: nacos://nacos:nacos@localhost:8848

自定義命名空間

# application.yml (Spring Boot)
dubbo:
 registry:
   address: nacos://localhost:8848?namespace=5cbb70a5-xxx-xxx-xxx-d43479ae0932

# application.yml (Spring Boot)
dubbo:
 registry:
   address: nacos://localhost:8848
   parameters.namespace: 5cbb70a5-xxx-xxx-xxx-d43479ae0932

自定義分組

# application.yml
dubbo:
 registry:
   address: nacos://localhost:8848
   group: dubbo

如果不配置的話,group 是由 Nacos 默認指定。group 和 namespace 在 Nacos 中代表不同的隔離層次,通常來說 namespace 用來隔離不同的用戶或環(huán)境,group 用來對同一環(huán)境內(nèi)的數(shù)據(jù)做進一步歸組。

注冊接口級消費者

Dubbo 3.0.0 版本以后,增加了是否注冊消費者的參數(shù),如果需要將消費者注冊到 nacos 注冊中心上,需要將參數(shù)(register-consumer-url)設(shè)置為true,默認是false。

# application.yml
dubbo:
  registry:
    address: nacos://localhost:8848?register-consumer-url=true

# application.yml
dubbo:
  registry:
    address: nacos://localhost:8848
    parameters.register-consumer-url: true

多注冊中心

關(guān)聯(lián)服務(wù)與多注冊中心

全局默認注冊中心

Dubbo框架會自動執(zhí)行以下動作:

  • 對于所有的Service服務(wù),向所有全局默認注冊中心注冊服務(wù)地址。
  • 對于所有的Reference服務(wù),向所有全局默認注冊中心訂閱服務(wù)地址。
# application.yml (Spring Boot)
dubbo:
  registries:
    nacosPreRegistry:
      address: nacos://nacos:nacos@127.0.0.1:8848
      parameters.namespace: pre
      group: DUBBO_GROUP
    nacosTestRegistry:
      address: nacos://nacos:nacos@127.0.0.1:8848
      parameters.namespace: test1
      group: DUBBO_GROUP
@DubboService
public class DemoServiceImpl implements DemoService {}

@DubboService
public class HelloServiceImpl implements HelloService {}

設(shè)置全局默認注冊中心

dubbo.registry.default用來設(shè)置默認注冊中心,默認值為true,即被視作全局注冊中心。

未指定注冊中心的服務(wù)自動注冊或訂閱全局默認注冊中心。

# application.yml (Spring Boot)
dubbo:
  registries:
    nacosPreRegistry:
      address: nacos://nacos:nacos@127.0.0.1:8848
      parameters.namespace: pre
      group: DUBBO_GROUP
      default: true # 默認是true
    nacosTestRegistry:
      address: nacos://nacos:nacos@127.0.0.1:8848
      parameters.namespace: test1
      group: DUBBO_GROUP
      default: false

顯示關(guān)聯(lián)服務(wù)于注冊中心

以下配置,DemoService只注冊到nacosPreRegistry配置地址,HelloService只注冊到nacosTestRegistry配置地址。

@DubboService(registry = {"nacosPreRegistry"})
public class DemoServiceImpl implements DemoService {}

@DubboService(registry = {"nacosTestRegistry"})
public class HelloServiceImpl implements HelloService {}

多注冊中心訂閱

從單個服務(wù)訂閱的視角,如果存在多個注冊中心訂閱的情況,則可以根據(jù)注冊中心間的地址是否聚合分為兩種情況:多注冊中心地址不聚合;多注冊中心地址聚合。

多注冊中心地址不聚合

若注冊中心標記為dubbo.registry.default:true,則所有的服務(wù)都會某人注冊到這些注冊中心,消費者也會聚合訂閱這些注冊中心。

不聚合配置

  1. 取消全局默認標記:確保注冊中心未配置dubbo.registry.default:true。
  2. 顯示指定服務(wù)于注冊中心的關(guān)系: 通過服務(wù)級配置隔離注冊中心。
# application.yml (Spring Boot)
dubbo:
  registries:
    nacosPreRegistry:
      address: nacos://nacos:nacos@127.0.0.1:8848
      parameters.namespace: pre
      group: DUBBO_GROUP
      default: true # 默認是true
    nacosTestRegistry:
      address: nacos://nacos:nacos@127.0.0.1:8848
      parameters.namespace: test1
      group: DUBBO_GROUP
      default: false
@DubboService(registry = {"nacosPreRegistry"})
public class DemoServiceImpl implements DemoService {}

@DubboService(registry = {"nacosTestRegistry"})
public class HelloServiceImpl implements HelloService {}

多注冊中心地址聚合

通過設(shè)置多個注冊中心為全局默認,使服務(wù)同時注冊到多個注冊中心,消費者也從所有默認注冊中心訂閱地址。

服務(wù)提供者@DubboService或服務(wù)消費者@DubboReference為指定reigstry配置時,會訂閱所有的默認注冊中心。

# application.yml (Spring Boot)
dubbo:
  registries:
    nacosPreRegistry:
      address: nacos://nacos:nacos@127.0.0.1:8848
      parameters.namespace: pre
      group: DUBBO_GROUP
      default: true # 默認是true
    nacosTestRegistry:
      address: nacos://nacos:nacos@127.0.0.1:8848
      parameters.namespace: test1
      group: DUBBO_GROUP
      default: true

Multicast注冊中心

Multicast 注冊中心不需要啟動任何中心節(jié)點,只要廣播地址一樣,就可以互相發(fā)現(xiàn)。

使用

# 服務(wù)提供者與服務(wù)消費者
# application.yaml 
dubbo:
  registry:
    address: multicast://224.5.6.7:1234

工作原理

基本流程

  1. 提供方啟動時廣播自己的地址。
  2. 消費方啟動時廣播訂閱請求。
  3. 提供方接收到訂閱請求時,單播自己的地址給訂閱者,如果設(shè)置了unicast=false,則廣播給訂閱者。
  4. 消費方收到提供方地址后,連接該地址進行RPC調(diào)用。

使用限制

組播受網(wǎng)絡(luò)結(jié)構(gòu)限制,只適合小規(guī)模應(yīng)用或開發(fā)階段使用。組播地址段:224.0.0.0 - 239.255.255.255

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring Cloud Eureka 注冊與發(fā)現(xiàn)操作步驟詳解

    Spring Cloud Eureka 注冊與發(fā)現(xiàn)操作步驟詳解

    這篇文章主要介紹了Spring Cloud Eureka 注冊與發(fā)現(xiàn)操作步驟詳解,本文給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • java配置文件取值的多種方式總結(jié)

    java配置文件取值的多種方式總結(jié)

    這篇文章主要為大家詳細介紹了java配置文件取值的多種方式,包括一般項目,國際化項目,springboot項目,文中的示例代碼講解詳細,需要的可以參考下
    2023-11-11
  • SpringBoot之那些注入不了的Spring占位符(${}表達式)問題

    SpringBoot之那些注入不了的Spring占位符(${}表達式)問題

    這篇文章主要介紹了SpringBoot之那些注入不了的Spring占位符(${}表達式)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Java如何獲取客戶端mac地址

    Java如何獲取客戶端mac地址

    在用戶登錄時,通過獲取IP地址來識別計算機的MAC地址,然后將用戶賬號與該MAC地址進行綁定,確保每個賬號只能在一臺特定的計算機上登錄,增強系統(tǒng)安全性,這種方法適用于需要嚴格賬戶安全管理的場景
    2024-09-09
  • java 分轉(zhuǎn)元與元轉(zhuǎn)分實現(xiàn)操作

    java 分轉(zhuǎn)元與元轉(zhuǎn)分實現(xiàn)操作

    這篇文章主要介紹了java 分轉(zhuǎn)元與元轉(zhuǎn)分實現(xiàn)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • SpringBoot多數(shù)據(jù)源的兩種實現(xiàn)方式實例

    SpringBoot多數(shù)據(jù)源的兩種實現(xiàn)方式實例

    最近在項目開發(fā)中,需要為一個使用MySQL數(shù)據(jù)庫的SpringBoot項目,新添加一個PLSQL數(shù)據(jù)庫數(shù)據(jù)源,下面這篇文章主要給大家介紹了關(guān)于SpringBoot多數(shù)據(jù)源的兩種實現(xiàn)方式,需要的朋友可以參考下
    2022-04-04
  • 帶你了解Java中的異常處理(上)

    帶你了解Java中的異常處理(上)

    這篇文章主要介紹了Java異常處理的相關(guān)資料,幫助大家更好的理解和學(xué)習java,感興趣的朋友可以了解下
    2020-08-08
  • 如何在IDEA運行spark程序(搭建Spark開發(fā)環(huán)境)

    如何在IDEA運行spark程序(搭建Spark開發(fā)環(huán)境)

    spark程序可以通過pom.xml的文件配置,添加spark-core依賴,可以直接在IDEA中編寫spark程序并運行結(jié)果,這篇文章主要介紹了如何在IDEA運行spark程序(搭建Spark開發(fā)環(huán)境),需要的朋友可以參考下
    2024-02-02
  • 輕松掌握Java建造者模式

    輕松掌握Java建造者模式

    這篇文章主要幫助大家輕松掌握Java建造者模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • 聊聊spring @Transactional 事務(wù)無法使用的可能原因

    聊聊spring @Transactional 事務(wù)無法使用的可能原因

    這篇文章主要介紹了spring @Transactional 事務(wù)無法使用的可能原因,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07

最新評論

西畴县| 雷波县| 航空| 大兴区| 桐梓县| 射洪县| 英德市| 永川市| 吴江市| 遂宁市| 时尚| 鹤山市| 正阳县| 抚顺县| 大邑县| 平乡县| 常德市| 滕州市| 德庆县| 台中市| 敦化市| 仪陇县| 巴林左旗| 文昌市| 青海省| 龙泉市| 房产| 芮城县| 恩施市| 尖扎县| 周宁县| 宜丰县| 许昌县| 新营市| 永宁县| 临安市| 博白县| 桂东县| 南木林县| 波密县| 商丘市|