解决spring cloud alibaba框架使用dubbo过程中No provider问题


可能很多人为了服务能同时支持feign和dubbo的调用会选择使用spring cloud alibaba这个框架,最后发现了不少问题,比如重启provider的时候,consumer经常报No provider的异常,也查找了很多解决方式,尝试着升级版本等,最后可能都无济于事。一开始以为是dubbo的问题,最后了解到spring cloud alibaba目前还不太适合于生产环境,下面讲下如何以最便捷的方式解决这个问题。

1.注册中心的改造
注册中心这块如果你同时用到dubbo和feign的话,要把注册中心改成nacos,这样可以同时支持两种方式。以下的配置将基于nacos,nacos注册中心引入spring cloud alibaba提供的jar

<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2.把dubbo包换掉
不要使用spring cloud alibaba提供的dubbo包

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

换成

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

3.修改配置

#可以两种方式同时使用
#1.使用feign方式的时候需要配置
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848   
#2.使用dubbo方式
dubbo.consumer.check = false
dubbo.consumer.timeout = 3000
dubbo.consumer.retries = 0
dubbo.protocol.name = dubbo
dubbo.protocol.port = -1
dubbo.registry.address=nacos://127.0.0.1:8848

4.目前我使用的相关版本信息
spring-boot:2.1.5.RELEASE
spring-cloud-dependencies:Greenwich.SR6
dubbo-spring-boot-starter:2.7.3
spring-cloud-alibaba-dependencies:2.1.4.RELEASE


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM