13.Dubbo服务降级与整合Hystrix实现断路器
一、服务降级
什么是服务降级?
当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理或换种简单的方式处理,从而释放服务器资源以保证核心交易正常运作或高效运作。
通过Dubbo-Admin控制台进行操作
可以通过服务降级功能临时屏蔽某个出错的非关键服务,并定义降级后的返回策略。
向注册中心写入动态配置覆盖规则:
RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension(); Registry registry = registryFactory.getRegistry(URL.valueOf("zookeeper://10.20.153.10:2181")); registry.register(URL.valueOf("override://0.0.0.0/com.foo.BarService?category=configurators&dynamic=false&application=foo&mock=force:return+null")); |
其中:
- mock=force:return+null 表示消费方对该服务的方法调用都直接返回 null 值,不发起远程调用。用来屏蔽不重要服务不可用时对调用方的影响。
- 还可以改为 mock=fail:return+null 表示消费方对该服务的方法调用在失败后,再返回 null 值,不抛异常。用来容忍不重要服务不稳定时对调用方的影响。
二、整合hystrix
Hystrix 旨在通过控制那些访问远程系统、服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。Hystrix具备拥有回退机制和断路器功能的线程和信号隔离,请求缓存和请求打包,以及监控和配置等功能。
演示代码,只显示重要部分,全部代码文章末尾有代码下载地址
2.1新建Maven项目
2.2dubbo-spring-boot-hystrix
2.2.1pom.xml
2.3dubbo-spring-boot-hystrix-provider
2.3.1pom.xml
2.3.2 对外暴露RPCs实现类
2.4 dubbo-spring-boot-hystrix-consumer
2.4.1 pom.xml
2.4.2调用服务提供者
5.1成功调用
5.2失败调用
6.源码
https://gitee.com/niugangxy/dubbo
微信公众号