springcloud之微服务Hystrix 组件原理实现

springcloud常用组件
1、服务注册与发现:Eureka     ---有nacos替换
2、服务网关: Zuul                      ---版本不更新,由
 GateWay替换
3、服务负载均衡:Ribbon
4、服务之间调用:Feign
5、服务熔断:Hystrix   ---因官网不继续维护,可以使用阿里提供的Alibaba Sentinel 轻量级的流量控制、熔断降级 Java 库
6、配置中心:config     ---如果不想自己维护,可以使用阿里云nacos作为配置中心
7、服务链路追踪:Sleuth     
8、链路日志服务:Zipkin      ---Sleuth和Zipkin一起组合使用
9、分布式事务:Seata 

(5)、服务熔断(Hystrix) :Hystrix的设计目的是将应用中的远程系统访问、服务调用、第三方依赖包的调用入口,通过资源控制的方式隔离开,避免了在分布式系统中失败的级联塌方式传递,提升系统的弹性和健壮性。

限流
设置信号量模式下的最大并发量、线程池大小、缓冲区大小和缓冲区降级阈值。在示例中我们作如下设置

资源隔离模式   ----配置请求隔离的方式,有 threadPool(线程池,默认)和 semaphore(信号量)  

hystrix.command.default.execution.isolation.strategy=THREAD

核心线程池的大小默认值是 10
hystrix.threadpool.default.coreSize=1

线程池缓冲区大小, 如果为-1,则不缓冲,直接进行降级 fallback
hystrix.threadpool.default.maxQueueSize=200

线程池缓冲区大小超限的阈值,超限就直接降级 
hystrix.threadpool.default.queueSizeRejectionThreshold=199    --即便是maxQueueSize没有超过200个,只要过199就会被拒绝。

超时时间设置,默认1000毫秒
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=2000

线程池配置,如图所示:

-------------------------------------------------------------------------------------------------------------------------------------------------------

信号量模式下,最大并发量
hystrix.command.default.execution.isolation.semaphore.maxConcurrentRequests=200
是一个绝对值,无时间窗口,相当于亚毫秒级的,指任意时间点允许的并发数。当请求达到或超过该设置值后,其其余就会被拒绝。默认值是100   


熔断
在配置文件中我们开启了熔断,并且以5秒为度量周期,当5秒内请求超过4个错误超过50%时,就会开启熔断器,所有的请求都会直接降级,如果5秒内的请求不够4个,就算有三个请求且全部失败也不会开启熔断器。10秒后熔断器进入半打开状态会让一部分请求向服务端发起调用,如果成功关闭熔断器,否则再次进入熔断状态

如图所示:

Open:熔断器打开状态,此时对下游的调用都内部直接返回错误,不走网络,但设计了一个时钟选项,默认的时钟达到了一定时间(这个时间一般设置成平均故障处理时间,也就是MTTR),到了这个时间,进入半熔断状态;
重点:意思是熔断器打开状态下,通过路由网关还是转发请求到熔断服务上,只不过返回友好报错信息而已,至于高可用状态需要设置

Half-Open:半熔断状态,允许定量的服务请求,如果调用都成功(或一定比例)则认为恢复了,关闭熔断器,否则认为还没好,又回到熔断器打开状态;
 



常用参数如下:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值