您的位置:首页 > 房产 > 家装 > 黑马程序员项目库_汽车之家app下载_百度推广电话_app推广团队

黑马程序员项目库_汽车之家app下载_百度推广电话_app推广团队

2025/4/19 1:57:47 来源:https://blog.csdn.net/zzw_17600691357/article/details/147076555  浏览:    关键词:黑马程序员项目库_汽车之家app下载_百度推广电话_app推广团队
黑马程序员项目库_汽车之家app下载_百度推广电话_app推广团队

注册中心与服务发现

注册中心概述

注册中心是dubbo服务治理的核心组件,Dubbo依赖注册中心的协调实现服务发现,自动化的服务发现是微服务实现动态扩容、负载均衡、流量治理的基础。
Dubbo的服务发现机制经历了Dubbo2时代的接口级服务发现、Dubbo3时代的应用级服务发现。

基本使用

SpringBoot开发:在application.yaml中添加registry配置

dubbo:registry:address: { protocol }://${cluster-address}
  • protocol:配置中心类型
  • cluster-address:注册中心的集群地址,比如address: nacos://127.0.0.1:8848,如需要集群格式地址可使用backup参数:address: nacos://localhost:8848?backup=localshot:8846,localshot:8847

配置中心与元数据中心

配置中心、元数据中心是实现Dubbo高阶服务治理能力会依赖的组件,如流量管控规则等。
相比于注册中心,这两个组件的配置是可选的。

对于部分注册中心类型(如Zookeeper、Nacos等),dubbo会默认同时将其用作元数据中心和配置中心(建议保持默认开启状态)。

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

dubbo解析后的默认行为:

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

如果不想使用nacos作为配置中心,可以通过一下两个参数来调整默认行为:

dubbo:registry:address: nacos://localhost:8848use-as-config-center: falseuse-as-metadata-report: falseconfig-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

高级配置

认证与鉴权

如果Zookeeper开启认证,

  • Dubbo支持指定username、password的方式传入身份标识·。
    # application.yml
    dubbo:registry:address: zookeeper://localhost:2181username: hellopassword: 123456
    
  • 可以将参数扩展在address上
    # application.yml
    dubbo:registry:address: zookeeper://hello:123456@localhost:2181
    
分组隔离

通过制定group属性,可以在同一个zookeeper集群内实现微服务地址的逻辑隔离。

dubbo:registry:address: zookeeper://127.0.0.1:2181group: zookeeper-pre
其它配置
dubbo:registry:address: zookeeper://127.0.0.1:2181timeout: 30 * 1000 # 连接超时时间,默认 30ssession: 60 * 1000 # 会话超时时间,默认 60s

工作原理

Zookeeper注册中心实现支持一下高可用能力:

  • 当提供者出现断电等异常停机时,注册中心能自动删除提供者信息。
  • 当注册中心重启时,能自动恢复注册数据,以及订阅请求。
  • 当回话过期时,能自动恢复注册数据,以及订阅请求。
  • 当设置registry.check=false时,记录失败注册和订阅请求,后台定时重试。
接口级服务发现
  1. 服务提供者启动时,向/dubbo/com.doudou.demo.api.DemoService/providers目录下写入自己的URL地址。
  2. 服务消费者启动时,订阅/dubbo/com.doudou.demo.api.DemoService/providers目录下提供的URL地址。并向/dubbo/com.doudou.demo.api.DemoService/consumers目录下写入自己的URL地址。
  3. 监控中心启动时,订阅/dubbo/com.doudou.demo.api.DemoService目录下的所有提供者和消费者URL地址。

可通过registry.group设置zookeeper的根节点,不配置使用默认的/dubbo根节点

应用级服务发现

应用级服务发放以应用名为粒度分发地址列表。服务提供者启动着启动时,向/service/app目录下写入自己的URL地址。
应用级的URL只包含一些实例级别的参数,如tri://ip:port?region=hangzhou

可通过registry.group设置zookeeper的根节点,默认使用/services根节点。

在应用级服务发现模型中,接口级别的配置信息由服务提供者与服务消费者之间自行同步协商,不再由注册中心服务同步,从而大大减少了注册中心的地址同步压力。

接口应用映射

在应用级服务发现中,zookeeper注册中心还会存储一份额外的元数据,用于解决接口名到应用名之间的映射。存储路径:/dubbo/mapping/service

元数据

如果使用应用级服务发现的集中式元数据模式,默认是点对点模式,可通过dubbo.registry.metadata-type=remote开启。在zookeeper服务/dubbo/metadata目录下会保存每个应用对于机器的元数据信息。

Nacos注册中心

基本配置

maven依赖

springboot应用

<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应用

<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:8848parameters.namespace: 5cbb70a5-xxx-xxx-xxx-d43479ae0932
自定义分组
# application.yml
dubbo:registry:address: nacos://localhost:8848group: dubbo

如果不配置的话,group 是由 Nacos 默认指定。group 和 namespace 在 Nacos 中代表不同的隔离层次,通常来说 namespace 用来隔离不同的用户或环境,group 用来对同一环境内的数据做进一步归组。

注册接口级消费者

Dubbo 3.0.0 版本以后,增加了是否注册消费者的参数,如果需要将消费者注册到 nacos 注册中心上,需要将参数(register-consumer-url)设置为true,默认是false。

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

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

多注册中心

关联服务与多注册中心

全局默认注册中心

Dubbo框架会自动执行以下动作:

  • 对于所有的Service服务,向所有全局默认注册中心注册服务地址。
  • 对于所有的Reference服务,向所有全局默认注册中心订阅服务地址。
# application.yml (Spring Boot)
dubbo:registries:nacosPreRegistry:address: nacos://nacos:nacos@127.0.0.1:8848parameters.namespace: pregroup: DUBBO_GROUPnacosTestRegistry:address: nacos://nacos:nacos@127.0.0.1:8848parameters.namespace: test1group: DUBBO_GROUP
@DubboService
public class DemoServiceImpl implements DemoService {}@DubboService
public class HelloServiceImpl implements HelloService {}
设置全局默认注册中心

dubbo.registry.default用来设置默认注册中心,默认值为true,即被视作全局注册中心。
未指定注册中心的服务自动注册或订阅全局默认注册中心。

# application.yml (Spring Boot)
dubbo:registries:nacosPreRegistry:address: nacos://nacos:nacos@127.0.0.1:8848parameters.namespace: pregroup: DUBBO_GROUPdefault: true # 默认是truenacosTestRegistry:address: nacos://nacos:nacos@127.0.0.1:8848parameters.namespace: test1group: DUBBO_GROUPdefault: false
显示关联服务于注册中心

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

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

多注册中心订阅

从单个服务订阅的视角,如果存在多个注册中心订阅的情况,则可以根据注册中心间的地址是否聚合分为两种情况:多注册中心地址不聚合;多注册中心地址聚合。

多注册中心地址不聚合

若注册中心标记为dubbo.registry.default:true,则所有的服务都会某人注册到这些注册中心,消费者也会聚合订阅这些注册中心。
不聚合配置

  1. 取消全局默认标记:确保注册中心未配置dubbo.registry.default:true
  2. 显示指定服务于注册中心的关系: 通过服务级配置隔离注册中心。
# application.yml (Spring Boot)
dubbo:registries:nacosPreRegistry:address: nacos://nacos:nacos@127.0.0.1:8848parameters.namespace: pregroup: DUBBO_GROUPdefault: true # 默认是truenacosTestRegistry:address: nacos://nacos:nacos@127.0.0.1:8848parameters.namespace: test1group: DUBBO_GROUPdefault: false
@DubboService(registry = {"nacosPreRegistry"})
public class DemoServiceImpl implements DemoService {}@DubboService(registry = {"nacosTestRegistry"})
public class HelloServiceImpl implements HelloService {}
多注册中心地址聚合

通过设置多个注册中心为全局默认,使服务同时注册到多个注册中心,消费者也从所有默认注册中心订阅地址。
服务提供者@DubboService或服务消费者@DubboReference为指定reigstry配置时,会订阅所有的默认注册中心。

# application.yml (Spring Boot)
dubbo:registries:nacosPreRegistry:address: nacos://nacos:nacos@127.0.0.1:8848parameters.namespace: pregroup: DUBBO_GROUPdefault: true # 默认是truenacosTestRegistry:address: nacos://nacos:nacos@127.0.0.1:8848parameters.namespace: test1group: DUBBO_GROUPdefault: true

Multicast注册中心

Multicast 注册中心不需要启动任何中心节点,只要广播地址一样,就可以互相发现。

使用

# 服务提供者与服务消费者
# application.yaml 
dubbo:registry:address: multicast://224.5.6.7:1234

工作原理

基本流程
  1. 提供方启动时广播自己的地址。
  2. 消费方启动时广播订阅请求。
  3. 提供方接收到订阅请求时,单播自己的地址给订阅者,如果设置了unicast=false,则广播给订阅者。
  4. 消费方收到提供方地址后,连接该地址进行RPC调用。
使用限制

组播受网络结构限制,只适合小规模应用或开发阶段使用。组播地址段:224.0.0.0 - 239.255.255.255

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com