4 Star 5 Fork 4

HK-Poc / hk-hystrix-dubbo

加入 Gitee
与超过 800 万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README.md

dubbo-hystrix

dubbo集成hystrix熔断器

一、背景

在微服务架构中通常会有多个服务层调用,基础服务的故障可能会导致级联故障,进而造成整个系统不可用的情况,这种现象被称为服务雪崩效应。服务雪崩效应是一种因“服务提供者”的不可用导致“服务消费者”的不可用,并将不可用逐渐放大的过程。

如果下图所示:A作为服务提供者,B为A的服务消费者,C和D是B的服务消费者。A不可用引起了B的不可用,并将不可用像滚雪球一样放大到C和D时,雪崩效应就形成了。

二、简介

熔断器的原理如同电力过载保护器。它可以实现快速失败,如果它在一段时间内侦测到许多类似的错误,会强迫其以后的多个调用快速失败,不再访问远程服务器,从而防止应用程序不断地尝试执行可能会失败的操作,使得应用程序继续执行而不用等待修正错误,或者浪费CPU时间去等到长时间的超时产生。

三、项目说明

1、:dubbo-consumer、dubbo-provider分别作为服务的消费者和生产者,所有熔断相关配置是在消费者中配置。
2、dubbo-consumer 项目pom文件说明:
有两种方案可以集成hystrix:

方案一:基于springboot项目,熔断方式是针对单个方法(不限于rpc调用)熔断
方案二:需要配置熔断过滤器,熔断方式是针对所有rpc接口统一熔断

四、熔断方案一

1、springboot启动类添加注解 @EnableCircuitBreaker

2、要熔断方法上添加注解@HystrixCommand(fallbackMethod="yourfunction")
针对不同的业务自定义熔断后调用的方法

3、熔断策略配置
配置文件:
$PWD/dubbo-consumer/src/main/resources/application.properties
可以指定更多策略,如错误率多少后熔断等,可参考:http://blog.csdn.net/harris135/article/details/77879148?locationNum=3&fps=1

五、熔断方案二

1、将核心类DubboHystrixCommandHystrixFilter添加到项目中

2、新建dubbo过滤器配置com.alibaba.dubbo.rpc.Filter,注意,此配置需放在META-INF下的dubbo目录中。配置内容如下:

3、熔断策略配置
可以指定超时、错误次数等策略。可以参考源码提供的方法或Hystrix官方配置说明

六、测试

本demo使用的是方案一

1、修改配置文件

$PWD/dubbo-consumer/src/main/resources/consumer.xml

2、启动dubbo-provider项目

cd $PWD/dubbo-provider
sh startup-code.sh

3、启动dubbo-consumer项目

cd $PWD/dubbo-consumer
sh startup-code.sh

4、浏览器打开 http://${ip}:8099/test/say

成功返回 from provide: hello说明rpc接口调用成功

5、修改配置文件

$PWD/dubbo-consumer/src/main/resources/application.properties
将超时时间设置2000(单位ms)

6、重新启动dubbo-consumer项目

cd $PWD/dubbo-consumer
sh startup-code.sh

7、浏览器再次打开 http://${ip}:8099/test/say

成功返回 timeout hystrix 说明超时熔断成功

8、说明

dubbo-provider提供的rpc示例接口有3秒的睡眠时间,所以熔断配置2秒或4秒即可验证是否熔断生效。

仓库评论 ( 0 )

你可以在登录后,发表评论

简介

hystrix熔断器与dubbo框架的结合 展开 收起
Java
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/HK-Poc/hk-hystrix-dubbo.git
git@gitee.com:HK-Poc/hk-hystrix-dubbo.git
HK-Poc
hk-hystrix-dubbo
hk-hystrix-dubbo
master

搜索帮助