Soul源码解析(16)
一、目标
1、使用Soul网关熔断插件;
2、解读熔断插件关键代码;
二、内容
2.1 背景
-
熔断:在互联网系统中,当下游服务因访问压力过大而响应变慢或失败,上游服务为了保护系统整体的可用性,可以暂时切断对下游服务的调用。这种牺牲局部,保全整体的措施就叫做熔断。
-
Hystrix 是Netflix开源的一款针对分布式系统的延迟和容错库,目的是用来隔离分布式服务故障,以减少不同服务之间资源竞争带来的相互影响。提供了优雅降级机制。提供了熔断机制使服务可以快速失败,而不是一直阻塞等待服务响应,并能快速恢复。
-
hystrix插件是网关用来对流量进行熔断的核心实现;
-
使用信号量的方式来处理请求;
2.2 hystrix使用
2.2.1 soul-admin配置
-
启动soul-admin服务,登录后台管理页面;
-
在
soul-admin
–> 插件管理 –>hystrix
,设置为开启; -
如果用户不使用,则在
soul-admin
后台把此插件停用;
- 在插件列表找到hystrix插件,新建选择器
- 规则配置
- 规则参数解释:
- 跳闸最小请求数量,至少达到这个量才会触发熔断;
- 最大并发量,至少达到这个并发量才会触发熔断;
- 分组key,默认设置为contextPath;
- 命令key,默认设置为具体的请求路径;
- 错误百分比阈值,至少达到这个错误百分比才会触发熔断;
- 跳闸休眠时间,熔断后恢复的时间;
- 失败降级调用的URL
2.2.2 soul-bootstrap配置
- 在soul-bootstrap的pom.xml文件中添加hystrix支持
<!-- soul hystrix plugin start--><dependency><groupId>org.dromara</groupId><artifactId>soul-spring-boot-starter-plugin-hystrix</artifactId><version>${last.version}</version></dependency><!-- soul hystrix plugin end-->
- 然后启动soul-bootstrap服务;
- 再启动一个soul-examples-http服务来进行测试;
2.3 hystrix调用测试
- 这里使用apache-jmeter-5.4.1来进行测试,首先关闭插件,用50个并发进行调用,可以看到调用都成功了!
- 然后把hystrix插件打开,再来调用,看一下调用结果:
可以看到一些请求被拒绝了。
2.4 测试过程中遇到的问题
在第一次熔断生效之后,在soul-admin控制页面修改hystrix配置,然后再次调用,会抛出异常,必须重启一下,新的配置才会生效:
三、总结
今天一起学习了hystrix查件的使用,过程中遇到的一个问题是,在第一次熔断生效之后,在soul-admin控制页面修改hystrix配置,然后再次调用,会抛出异常。明天继续看一下关键的代码实现。
Soul源码解析(16)
一、目标
1、使用Soul网关熔断插件;
2、解读熔断插件关键代码;
二、内容
2.1 背景
-
熔断:在互联网系统中,当下游服务因访问压力过大而响应变慢或失败,上游服务为了保护系统整体的可用性,可以暂时切断对下游服务的调用。这种牺牲局部,保全整体的措施就叫做熔断。
-
Hystrix 是Netflix开源的一款针对分布式系统的延迟和容错库,目的是用来隔离分布式服务故障,以减少不同服务之间资源竞争带来的相互影响。提供了优雅降级机制。提供了熔断机制使服务可以快速失败,而不是一直阻塞等待服务响应,并能快速恢复。
-
hystrix插件是网关用来对流量进行熔断的核心实现;
-
使用信号量的方式来处理请求;
2.2 hystrix使用
2.2.1 soul-admin配置
-
启动soul-admin服务,登录后台管理页面;
-
在
soul-admin
–> 插件管理 –>hystrix
,设置为开启; -
如果用户不使用,则在
soul-admin
后台把此插件停用;
- 在插件列表找到hystrix插件,新建选择器
- 规则配置
- 规则参数解释:
- 跳闸最小请求数量,至少达到这个量才会触发熔断;
- 最大并发量,至少达到这个并发量才会触发熔断;
- 分组key,默认设置为contextPath;
- 命令key,默认设置为具体的请求路径;
- 错误百分比阈值,至少达到这个错误百分比才会触发熔断;
- 跳闸休眠时间,熔断后恢复的时间;
- 失败降级调用的URL
2.2.2 soul-bootstrap配置
- 在soul-bootstrap的pom.xml文件中添加hystrix支持
<!-- soul hystrix plugin start--><dependency><groupId>org.dromara</groupId><artifactId>soul-spring-boot-starter-plugin-hystrix</artifactId><version>${last.version}</version></dependency><!-- soul hystrix plugin end-->
- 然后启动soul-bootstrap服务;
- 再启动一个soul-examples-http服务来进行测试;
2.3 hystrix调用测试
- 这里使用apache-jmeter-5.4.1来进行测试,首先关闭插件,用50个并发进行调用,可以看到调用都成功了!
- 然后把hystrix插件打开,再来调用,看一下调用结果:
可以看到一些请求被拒绝了。
2.4 测试过程中遇到的问题
在第一次熔断生效之后,在soul-admin控制页面修改hystrix配置,然后再次调用,会抛出异常,必须重启一下,新的配置才会生效:
三、总结
今天一起学习了hystrix查件的使用,过程中遇到的一个问题是,在第一次熔断生效之后,在soul-admin控制页面修改hystrix配置,然后再次调用,会抛出异常。明天继续看一下关键的代码实现。