Dubbo 整合SpringCloud gateway, Hystrix

本文只是讨论怎么让Dubbo可以像SpringCloud一样开发微服务,仅供参考

因为很少碰到Dubbo项目,大部分项目都是Spring Cloud,只短暂经历过两个Dubbo项目。Dubbo项目没有gateway ,没有配置中心,微服务是怎么搭建的。参与的其中一个项目做得很别扭,其中一个项目直接从Spring Cloud把组件拿过来用。那么网关有了,熔断也有了,配置中心也有了。

zookeeper安装和配置省略

引入Spring Cloud gateway

引入pring cloud gateway依赖

<dependencies>

                <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
            <version>2.0.0.RELEASE</version>
        </dependency>
                <dependency>

                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-starter-gateway</artifactId>
                    <version>2.0.0.RELEASE</version>
                    <!--SpringBoot版本-->
                </dependency>
        <dependency>
            <groupId>io.projectreactor.ipc</groupId>
            <artifactId>reactor-netty</artifactId>
            <version>0.7.6.RELEASE</version>
        </dependency>

    </dependencies>

应用依赖:

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
           <version>2.0.9.RELEASE</version> <!-- 根据你的Spring Boot版本选择 -->
        </dependency>

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
               <version>2.0.9.RELEASE</version>
            </dependency>

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


  <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
            <version>2.0.2.RELEASE</version>
        </dependency>
         </dependencies>

gateway yml 配置:

server:
  port: 9001

spring:
  application:
    name: gateway
  cloud:
     zookeeper:
       connect-string: localhost:2181
       discovery:
       #这里一定指定一个地方,services是默认的,可以不写
         root: /services
     gateway:
        discovery:
          locator:
             enabled: true
             lower-case-service-id: true
        enabled: true
        routes:
           - id: web-filter
             uri: lb://user
             predicates:
                - Path=/api/user/**       

应用properties配置:

server.port=9090

spring.application.name=user
dubbo.scan.base-packages=com.wkw
spring.cloud.zookeeper.connect-string=127.0.0.1:2181
#这里一定指定一个地方,services是默认的,可以不写
spring.cloud.zookeeper.discovery.root=/services
#这里一定要和server.port一样不然gateway无法通过zookeeper访问
spring.cloud.zookeeper.discovery.instance-port=9090
dubbo.protocol.name=dubbo
dubbo.protocol.port=666
dubbo.registry.address=zookeeper://127.0.0.1:2181

通过zookeeper查看服务已经注册上来
在这里插入图片描述

添加@EnableDiscoveryClient注解,发现微服务:
在这里插入图片描述

gateway成功访问应用:
在这里插入图片描述
在这里插入图片描述

引入Hystrix

引入配置:

  <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
             <version>2.0.4.RELEASE</version>
        </dependency>

这里说一下,就是Spring Cloud 的组件都可以通过springboot集成,根据spring cloud对spring boot版本的支持在spring官网找到特定的Hystrix版本,根据spring boot 2.0.9.RELEASE版本找对应版本的Hystrix版本

在这里插入图片描述
在这里插入图片描述
添加注解@EnableCircuitBreaker:
在这里插入图片描述
写一个错误熔断的方法,制造一个错误:
在这里插入图片描述

既然Hystrix成功了,精力有限其他组件就不演示,应该也可以引进来,都是由springboot集成到应用中。以前经历的项目把Config也集成到进来作配置中心。我发现他们还把Skywalking引进来作链路追踪

以下都是我认为Dubbo和Spring Cloud框架的区别,Dubbo完全不需要重复制造轮子,直接引用spring cloud的组件就可以

DubboSpring Cloud
注册中心zookeeper,nacoseureka, nacos
服务调用方式RPC (Netty)RPC,Rest API(HTTP)
服务网关Spring Cloud Netflix Zuul, Spring Cloud gatewaySpring Cloud Netflix Zuul,Spring Cloud gateway
断路器自带,Spring Cloud Netflix HystrixSpring Cloud Netflix Hystrix
分布式配置Spring CLoud ConfigSpring CLoud Config
服务跟踪Spring Cloud SleuthSpring Cloud Sleuth
消息总线Spring CLoud BusSpring CLoud Bus
数据流Spring Cloud StreamSpring Cloud Stream
批量任务Spring Cloud TaskSpring Cloud Task
限流Spring Cloud Netflix Hystrix,Spring Cloud Alibaba SentinelSpring Cloud Netflix Hystrix,Spring Cloud Alibaba Sentinel

总结

总结一下,既然Dubbo可以用Spring Cloud的组件,那反过来使用Spring Cloud,把Dubbo的RPC引进来不就好了,Spring Cloud 只需要在Maven设置一个总的配置,组件版本可以自动匹配。把Feign拿掉,就可以使用Dubbo的netty通信
顺便说下,阿里云提供了一个dubbo案例,https://github.com/aliyun/alibabacloud-microservice-demo/tree/master

  • 11
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值