soul源码学习(十五)-熔断插件之hystrix(上)

文章目录

  • 基本概念
  • Hystrix原理
  • hystrix插件配置

基本概念

  1. 服务熔断:
    一般是指软件系统中,由于某些原因使得服务出现了过载现象,为防止造成整个系统故障,从而采用的一种保护措施,所以很多地方把熔断亦称为过载保护。很多时候刚开始可能只是系统出现了局部的、小规模的故障,然而由于种种原因,故障影响的范围越来越大,最终导致了全局性的后果。
    适用场景:防止应用程序直接调用那些很可能会调用失败的远程服务或共享资源
  2. 服务降级:
    当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运行。

Hystrix原理

Hystrix隔离方式采用线程/信号的方式,通过隔离限制依赖的并发量和阻塞扩散
1)线程隔离
Hystrix在用户请求和服务之间加入了线程池。
Hystrix为每个依赖调用分配一个小的线程池,如果线程池已满调用将被立即拒绝,默认不采用排队.加速失败判定时间。线程数是可以被设定的。
原理:用户的请求将不再直接访问服务,而是通过线程池中的空闲线程来访问服务,如果线程池已满,则会进行降级处理,用户的请求不会被阻塞,至少可以看到一个执行结果(例如返回友好的提示信息),而不是无休止的等待或者看到系统崩溃。
2)信号隔离:
信号隔离也可以用于限制并发访问,防止阻塞扩散, 与线程隔离最大不同在于执行依赖代码的线程依然是请求线程(该线程需要通过信号申请,
如果客户端是可信的且可以快速返回,可以使用信号隔离替换线程隔离,降低开销。信号量的大小可以动态调整, 线程池大小不可以。

hystrix插件配置

  1. soul-bootstrap的pom文件配置引入

            org.dromara
            soul-spring-boot-starter-plugin-hystrix
            ${project.version}

  1. 启动soul-admin和soul-bootstrap以及soul-examples-http并将hystrix插件开关打开

soul源码学习(十五)-熔断插件之hystrix(上)_第1张图片
3. 配置hystrix
配置selector
soul源码学习(十五)-熔断插件之hystrix(上)_第2张图片
rule配置
soul源码学习(十五)-熔断插件之hystrix(上)_第3张图片

Hystrix处理详解:

跳闸最小请求数量 :最小的请求量,至少要达到这个量才会触发熔断

错误百分比阀值 : 这段时间内,发生异常的百分比。

最大并发量 : 最大的并发量

跳闸休眠时间(ms) :熔断以后恢复的时间。

分组Key: 一般设置为:contextPath

命令Key: 一般设置为具体的 路径接口。

这里使用线程熔断线程机制,设置跳闸最小请求为1,线程数均设置为1,压测的时候使用10个请求,2个线程效果比较明显
soul源码学习(十五)-熔断插件之hystrix(上)_第4张图片
网关的后台输出入下图:
soul源码学习(十五)-熔断插件之hystrix(上)_第5张图片
可以发现熔断器已经生效。
本小节暂时了解了一下熔断机制,通过配置hystrix插件,简单体验了一下插件的熔断功能,下一节将会分析其实现机制

你可能感兴趣的:(soul源码分析)