1. springboot整合dubbo

  • 在provider端,添加maven引入,修改pom.xml文件

    引入springboot,版本:2.3.2.RELEASE,dubbo(org.apache.dubbo)版本:2.7.8,服务注册中心采用consul,添加consul注册支持

    dubbo学习实践(4)之Springboot整合Dubbo及Hystrix服务熔断降级_Springboot
    dubbo学习实践(4)之Springboot整合Dubbo及Hystrix服务熔断降级_Springboot_02

    添加org.apache.curator包引入:

    dubbo学习实践(4)之Springboot整合Dubbo及Hystrix服务熔断降级_dubbo_03

  • 在程序主入口处,添加配置文件扫描路径及启用dubbo

    dubbo学习实践(4)之Springboot整合Dubbo及Hystrix服务熔断降级_Hystrix_04

    配置类:DubboConfiguration

    dubbo学习实践(4)之Springboot整合Dubbo及Hystrix服务熔断降级_Springboot_05
    里面包含应用信息,注册中心配置及应用服务协议定义

    在Annotation目录下,定义服务接口定义IUserService及服务实现UserServiceImp

    dubbo学习实践(4)之Springboot整合Dubbo及Hystrix服务熔断降级_Springboot_06

    dubbo学习实践(4)之Springboot整合Dubbo及Hystrix服务熔断降级_Springboot_07

  • consumer端,同样引入springboot运行程序,pom文件的内容与provider端一样

    程序主入口如下:

    dubbo学习实践(4)之Springboot整合Dubbo及Hystrix服务熔断降级_Hystrix_08

    定义一个服务接口IUserOperateService与实现UserOperateService,用来调用provider端提供的服务

    dubbo学习实践(4)之Springboot整合Dubbo及Hystrix服务熔断降级_Springboot_09
    dubbo学习实践(4)之Springboot整合Dubbo及Hystrix服务熔断降级_Springboot_10
    注意,dubbo的注解都有所变化,见红圈处

  • 运行provider与consumer端,可以运行成功,springboot整合dubbo完成

2. dubbo集成hystrix框架

  • 看一下hystrix工作流程,参考url: https://www.jianshu.com/p/611a7f150180

    dubbo学习实践(4)之Springboot整合Dubbo及Hystrix服务熔断降级_Springboot_11

  • Dubbo服务降级

    dubbo学习实践(4)之Springboot整合Dubbo及Hystrix服务熔断降级_Springboot_12

  • Hystrix

    Hystrix 旨在通过控制那些访问远程系统、服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。Hystrix具备拥有回退机制和断路器功能的线程和信号隔离,请求缓存和请求打包,以及监控和配置等功能。
    在provider项目中,添加Hystrix依赖
      org.springframework.cloudspring-cloud-starter-netflix-hystrix2.2.5.RELEASE

    dubbo学习实践(4)之Springboot整合Dubbo及Hystrix服务熔断降级_dubbo_13

    在项目中,maven添加web引用,否则provider会自动退出

    dubbo学习实践(4)之Springboot整合Dubbo及Hystrix服务熔断降级_Hystrix_14

    在provider启动端,添加Hytrix服务熔断启用注解@EnableHystrix

    dubbo学习实践(4)之Springboot整合Dubbo及Hystrix服务熔断降级_Hystrix_15

    在Provider端,添加UserServiceImp和IUserService服务定义,验证服务熔断

    dubbo学习实践(4)之Springboot整合Dubbo及Hystrix服务熔断降级_Springboot_16

    定义为DubboService,添加Hystrix注解,定义熔断条件,超时时间为2s
  • Consumer端Hystrix配置

    主程序,添加配置@EnableHystrix

    dubbo学习实践(4)之Springboot整合Dubbo及Hystrix服务熔断降级_Hystrix_17

    @EnableDubbo(scanBasePackages = "com.dubbo.consumer.Annotation"),扫描dubbo相关配置文件定义类
    新建UserOperateService和IUserOperateService操作来,用来远程调用userservice服务

    dubbo学习实践(4)之Springboot整合Dubbo及Hystrix服务熔断降级_Springboot_18

    定义一个Controller,进行熔断测试

    dubbo学习实践(4)之Springboot整合Dubbo及Hystrix服务熔断降级_Springboot_19

  • 运行调试

    输入地址:http://localhost:8580/GetHelloWorldReply?uid=xujk
    多刷新几次,看返回的结果也是不同的
    成功调用:

    dubbo学习实践(4)之Springboot整合Dubbo及Hystrix服务熔断降级_dubbo_20

    失败(超时)调用:

    dubbo学习实践(4)之Springboot整合Dubbo及Hystrix服务熔断降级_Springboot_21