最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

Soul源码解析(16)

IT圈 admin 2浏览 0评论

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配置,然后再次调用,会抛出异常。明天继续看一下关键的代码实现。

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论