SpringCloud 整合 Dubbo 3.X 使用新特性 应用级服务发现

依赖配置

引入依赖

            <!-- SpringCloud 微服务 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>2021.0.1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            
            <!-- Apache Dubbo 配置 -->
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-spring-boot-starter</artifactId>
                <version>3.0.6</version>
            </dependency>

这里解释一下为什么不用 Spring-Cloud-Alibaba 的 Dubbo 依赖

      <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-dubbo</artifactId>
        <version>2021.1</version>
      </dependency>

这个依赖主要是负责处理兼容 Feign 的 Dubbo 代理配置 通过 Feign 做服务发现
项目中 如果统一使用 Dubbo 则不需要使用这个依赖 在后续版本 官方也宣布此模块从主分支移除
况且 Dubbo 3.0 已经支持 基于应用服务的发现机制 故完全没必要与 Feign 做兼容处理

配置服务

        <!-- SpringCloud Alibaba Nacos -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <!-- SpringCloud Alibaba Nacos Config -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

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

配置Nacos bootstrap.yml

server:
  port: 9201

# Spring
spring:
  main:
    # 此配置禁止放入 nacos 优先级不够
    allow-circular-references: true
  application:
    # 应用名称
    name: ruoyi-system

--- # nacos 配置
spring:
  cloud:
    nacos:
      # nacos 服务地址
      server-addr: localhost:8848
      discovery:
        # 注册组
        group: DEFAULT_GROUP
      config:
        # 配置组
        group: DEFAULT_GROUP

在Nacos放置服务对应的配置 ruoyi-system.yml
Nacos默认读取与服务名同名的配置文件

dubbo:
  application:
    logger: slf4j
    # 元数据中心 local 本地 remote 远程 这里使用远程便于其他服务获取
    # 注意 这里不能使用 本地 local 会读取不到元数据
    metadataType: remote
    # 可选值 interface、instance、all,默认是 all,即接口级地址、应用级地址都注册
    register-mode: instance
    service-discovery:
      # FORCE_INTERFACE,只消费接口级地址,如无地址则报错,单订阅 2.x 地址
      # APPLICATION_FIRST,智能决策接口级/应用级地址,双订阅
      # FORCE_APPLICATION,只消费应用级地址,如无地址则报错,单订阅 3.x 地址
      migration: FORCE_APPLICATION
  protocol:
    # 设置为 tri 即可使用 Triple 3.0 新协议
    # 性能对比 dubbo 协议并没有提升 但基于 http2 用于多语言异构等 http 交互场景
    # 使用 dubbo 协议通信
    name: dubbo
    # dubbo 协议端口(-1表示自增端口,从20880开始)
    port: -1
  # 注册中心配置
  registry:
    address: nacos://localhost:8848
    # 这里注意 由于 3.X 的 bug 导致注册组不生效
    group: DUBBO_GROUP
    # 由于 group 不生效 这里使用 namespace 将 dubbo 服务与 cloud 服务隔离
    # 否则会导致正常请求路由到 dubbo 服务报错
    parameters:
      # 注意 这里要在 nacos 创建名为 dubbo 的 namespace 环境
      namespace: dubbo
  # 消费者相关配置
  consumer:
    # 支持校验注解
    validation: true
    # 超时时间
    timeout: 3000
    # 初始化检查
    check: false
  scan:
    # 接口实现类扫描
    base-packages: com.ruoyi.**.dubbo

编写业务接口
在这里插入图片描述
编写提供者接口实现
注意 注解为 @DubboService 标注为dubbo的service服务实现
在这里插入图片描述

编写消费者 消费接口
在这里插入图片描述

启动服务 观察现象

Dubbo 2.X 是以接口为注册发现
Dubbo 3.X 是以服务为注册发现
启动完成后 进入Nacos 观察

cloud 服务
在这里插入图片描述
dubbo 服务
在这里插入图片描述
这里可以看到 服务的元数据 已经指向了 元数据中心的地址

这样我们再去元数据中心找到 revision 标注的元数据配置
在这里插入图片描述
这里是以应用为单位存储的元数据配置信息
里面包括一些服务的配置 与 服务提供的接口等
在这里插入图片描述

测试Dubbo服务调用

在这里插入图片描述
在这里插入图片描述

  • 11
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯狂的狮子Li

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值