Hystrix(服务熔断/降级/限流)
2021-03-11 18:47:29 1 举报
AI智能生成
Hystrix(服务熔断/降级/限流)
作者其他创作
大纲/内容
微信扫一扫关注公众号喜欢收藏+点赞👍 谢谢
阅读导航
注册中心 Eureka 👉
点击跳转
负载均衡 Ribbon + Feign 👉
断路器 Hystrix
服务网关 Gateway 👉
Hystrix能够保证在一个服务调用依赖出问题的情况下,不会导致整体服务失败,避免级联故障,以提高分布式系统的容错能力
降级(客户端)
当客户端请求服务器端的时候,防止由于服务端超时或者错误,导致客户端一直等待,直接返回一个友好的提示给客户端
哪些情况会触发服务降级?
程序异常、请求超时、服务熔断、线程池/信号量打满
扩展
fallback备选方案的返回值类型要和原方法保持一致
熔断(服务端)
熔断机制(断路器)
熔断机制是应对雪崩效应的一种微服务链路保护机制,当在一个统计时间范围内请求失败数量达到设定值或当前的请求错误率达到设定的错误率阈值时开启断路,直接走fallback降级逻辑,在指定时间后尝试恢复调用链路(最重要的是能恢复)
简单来说熔断就是保险丝
服务降级 -> 服务熔断 -> 恢复调用链路
熔断类型
熔断打开
保险丝断了,此时服务处于不可用状态
熔断关闭
链路正常调通
熔断半开
放部分请求进来,观察调用状态
断路器如何工作?
概念
快照时间窗
统计一段时间内的错误数据,默认为最近的10秒
请求总数阈值
在时间窗内,必须达到请求数阈值才有资格熔断,默认20次
错误百分比
当请求总数在时间窗内超过了阈值,才会熔断,默认值是50%
熔断
默认10秒内总调用次数超过20次且有50%的请求调用失败才会打开断路器在断路器打开期间,不会走主逻辑,而是走降级逻辑,减少延迟
恢复
一段时间后(默认是5秒)此时断路器半开,会转发一部分请求,若调用成功则关闭断路器恢复链路,如果仍失败,则继续保持断开状态,重复此操作
隔离
服务隔离就是Hystrix为隔离的服务开启一个独立的线程池,这样在高并发的情况下不会影响其他服务比如设置某块代码最多只能使用10个线程,限定资源的使用,避免有故障时出现资源被抢占光的情况
隔离方式资源隔离(线程)
线程池隔离
为每个方法创建一个独立的线程池
信号量隔离
实现一个计数器来限制线程个数
限流
高并发流量进来,比如QPS突然飙升到100万,服务会崩溃,限流能让10万QPS进入系统,其他90万被拒绝
实时监控dashboard
监控+报警+优化。各种异常情况,有问题就及时报警,优化系统的配置和参数
监控页面一直显示loading?
@HystrixCommand注解和@EnableCircuitBreaker注解同时配置才会生效
0 条评论
回复 删除
下一页