Hystrix与sentinel

Hystrix与sentinel
Hystrix 对于并发 超时 错误率 都可以设置相应的阈值来进行熔断,从closed 状态转化为open状态,时间窗口期内是直接进行服务降级的,窗口期过去之后转为half-closed 当请求来到时若能成功返回,则转化为closed,否则转为open; 上图其实就是一个状态转化图。
sentinel 作为阿里巴巴 开发的 与 Hystrix具有类似功能的工具,主要:流量控制、熔断降级、系统保护
Hystrix也有熔断降级的功能,二者的设计理念是什么,有什么区别?
Hystrix主要关注点就是熔断降级,其隔离策略主要通过线程池/信号量 来进行的。将对外部资源的调用包装成为一个命令HystrixCommand/HystrixObservableCommand,每个Command在创建时需要有CommandKey,groupKey,来进行资源标识,默认情况下,groupkey 就是线程池的名字,一般情况下一个服务可以有多个接口,而服务对应groupkey 、接口对应commandkey(隔离策略一般为线程池 适用场景为大量RPC调用)线程池隔离模式下需要定义线程池的相关参数,之后命令的执行就会按照指定的策略进行执行,比如什么时候创建线程执行任务,什么时候加入队列等待执行,什么时候使用拒绝策略等等,可以参考JDK ThreadPoolExecutor。 信号量隔离策略的优点是开销小,缺点是无法自动降级。而是只能等待服务超时;
sentinel 还可基于平均响应时间做熔断降级。多样化的流量控制比如流量整型,还可系统负载保护。

推荐阅读
https://github.com/doocs/advanced-java/blob/main/docs/high-availability/hystrix-thread-pool-current-limiting.md

Hystrix与sentinel
其实 Hysrix 使用了 命令模式,将行为请求者 与 行为实现者 解耦。Runable是一个典型命令模式,Runnable担当命令的角色,Thread充当的是调用者,start方法就是其执行方法。

上一篇:python异常处理之traceback.print_exc()跟traceback.format_exc()


下一篇:sys模块