关于熔断器Hystrix替代方案的调研报告
一、背景
Netflix宣布停止Hystrix熔断器的开发,目前进入了维护模式。同时,也指出了Hystrix 1.5.18版本足够满足现阶段的应用(详细请参看:Hystrix Status)。

  虽然Hystrix 1.5.18版本目前能满足公司应用的要求,但随着公司技术栈的更新,势必很大可能导致此版本的Hystrix与相关技术不兼容。这样就需要提前

调研好可用的替代方案,以应变将要发生的由于版本不兼容或其他原因导致的问题。

二、Hystrix与可替代熔断器大体介绍
1.Hystrix
Hystrix是一个用来隔离远程系统、服务或第三方库访问时延迟与故障容错的库,用来阻止级联的服务失败及弹性化控制不可避免发生失败的复杂的分布式系统。

  它是通过这些方式来解决问题的:---隔离(线程池隔离和信号量隔离)。限制调用分布式服务的资源使用,某一个调用的服务出现问题不会影响其他服务调用;---优雅的降级机制。超时降级、资源不足时(线程或信号量)降级,降级后可以配合降级接口返回托底数据;---熔断。当失败率达到阀值自动触发降级(如因网络故障或超时造成的失败率高),熔断器触发的快速失败会进行快速恢复;---缓存。提供了请求缓存、请求合并实现;---支持实时监控、报警、控制(修改配置)。

2.可替代熔断器:

Sentinel
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。

    Sentinel具有以下特征:1.丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。2.完美的实时监控:Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。3.广泛的开源生态:Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。4.完善的SPI扩展点:Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。Sentinel的主要特性:

    Sentinel的开源生态:


Sentinel分为两个部分:
1.核心库(Java 客户端)不依赖任何框架/库,能够运行于所有 Java 运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持。
2.控制台(Dashboard)基于 Spring Boot 开发,打包后可以直接运行,不需要额外的 Tomcat 等应用容器。

哪些公司在用呢?
以下是部分使用 Sentinel 的企业列表

示例代码地址:https://github.com/alibaba/Sentinel/tree/master/sentinel-demo
交流群:

Resilience4j
Resilience4j是一个灵感来自Netflix Hystrix而开发的轻量级的容错库,特意为Java 8和函数式编程而设计。

    轻量级是因为---这个库使用了Vavr(formerly Javaslang),这个不会依赖外部的库。相对而言,Netflix Hystrix,编译时依赖Archaius,而Archaius会依赖大量的外部库,如Guava、Apache Commons Configuration等等;---同时,使用时你不必引入所有的Resilience4j库文件,你只需引入你需要的那部分即可。大致有如下功能---CircuitBreaker,Retry and Fallback:CircuitBreaker可以用来当服务调用失败达到阀值时进行熔断;当调用下级服务失败时,Retry可以配置进行重试的次数及重试间隔的时间等等;Fallback可以用在发生异常时,进行服务降级处理。---RateLimiter:用于方法的流量限制,比如限制方法A每秒不超过一次调用---Bulkhead:Bulkhead(术语:舱壁)可以用来限制并发调用的次数。Bulkhead可以跨各种线程和IO时运行良好。它是基于信号量运作的,与Hystrix不同的是,它不提供线程池运作方式。---Cache:Cache可以用来缓存上次的结果。 之后调用时会直接查询缓存获取结果,如果没有获取到,会接着调用服务进行获取结果。—Metrics:关于服务的一些度量,如总的调用次数、成功调用次数、失败调用次数、流量速度、成功调用时的响应时间等等。---Consume emitted events:CircuitBreaker,RateLimiter,Cache,Retry等组件可以发送大量可以被消费的事件,即你可以自定义消费者消费这些事件。哪些公司在用呢?Deutsche Telekom(每天超过4亿请求的应用)AOL(低延迟请求的应用)Netpulse(在系统中有40+的集成)wescale.de(一个B2B集成平台)Topia(一个用微服务架构的HR应用)Auto Trader Group plc(英国最大的数字汽车市场)PlayStation Network(平台后端)示例代码地址:https://github.com/RobWin/resilience4j-spring-boot-demo

Failsafe
Failsafe是一个轻量级、零依赖的库,用于在Java 8+处理错误。其使用简明的API去处理每天的事务,同时还可以弹性的处理这些事务。它通过使用一个或更多的弹性策略去包裹执行

逻辑来运行,即这些策略可以根据需要进行组合。

    这些策略如下:---Retries:重试策略---Circuit breakers:熔断---Fallbacks:降级贡献Failsafe是Halterman作者本人及一些志愿者努力的成果。示例代码地址:https://github.com/jhalterman/failsafe

三、对比说明
上述几种熔断器中目前最为流行的是以下三种,功能对比如下

   就目前调研发现这几种技术大体类似:---都能满足生产上的一些基本要求;---各种公司也都在使用它们;---都提供了一些示例代码,方便进行参考开发---都在github上可以找到其对应的开源代码---它们的文档都写得挺详细的,便于开发---都可以用控制台进行实时监控相比较Hystrix与Resilience4j而言,Sentinel更加有优势(不考虑Hystrix目前是标准配套技术),理由如下---Sentinel使用了资源与控制规则分离,代码侵入性更小,开发相较容易不少---Sentinel除了可以在控制台进行实时监控,还可以在控制台配置熔断规则---Sentinel官方提供钉钉交流群,开发人员可以进行沟通,提高了解决问题的效率---根据上面对比可以看出,虽然这几种技术的功能大体相同,但Sentinel更为强大---相比较而言,Sentinel的文档更为详细,同时配套功能更为完备---Sentinel官方提供了从Hystrix到Sentinel迁移的具体方案(迁移方案)相比较Hystrix而言,Sentinel与Resilience4j这两种技术目前并未被大量使用,而使用它们的公司并未对它们的使用情况进行一些评价,从而无从得知是否如它们描述的那样强大。

四、结论
正如Netflix说的那样,目前Hystrix 1.5.18版本足以支撑现有应用,建议暂时无需进行Hystrix的替换,可以暂且观察替代技术或其他技术的发展,最后再进行决定选用哪种技术。

   如果现在就需要做Hystrix的替换,建议使用阿里的Sentinel(理由如第三部分的对比说明)。

关于熔断器Hystrix替代方案的调研报告相关推荐

  1. 多领域多轮问答调研报告3

    多领域多轮问答调研报告3 目录 多领域多轮问答调研报告3 一.相关背景 1.1. 单领域 1.2. 多领域 1.2.1 综述 1.2.2 多领域DST方法与挑战 1.3. 数据集 1.3.1. 技术综 ...

  2. 智源发布人脸识别与公共卫生调研报告

    为了促进人工智能成为推动"健康社会"形成的使能技术之一,推动人工智能应用于全球可持续发展,北京智源人工智能研究院人工智能伦理与安全研究中心联合中国科学院自动化研究所中英人工智能伦理 ...

  3. 2016年金融全行业网络安全状况调研报告

    本报告由谷安天下和乌云联合发布,并感谢网贷之家.支付圈.安全值.安全牛等媒体和机构提供数据来源. 金融行业网络安全调研概述 报告背景 近两年来互联网金融飞速发展,不同于传统金融,依托于互联网的新的金融 ...

  4. SANS:2014年安全分析与安全智能调研报告

    2014年10月份,紧接着2014年度日志管理调研报告(Log management survey),SANS又发布了2014年度的安全分析与智能调研报告(Analytics and Intellig ...

  5. 6万广州人坐过无人出租车,过半月薪一万以上 | 中国首份Robotaxi乘客调研报告...

    李娅宁 发自 副驾寺  智能车参考 报道 | 公众号 AI4Auto 原来广州人民才是真名媛.真凡尔赛. 上下班车接车送,过半数的人月收入万元以上,78%以上都是本科以上学历-- 而且这个车,还不是人 ...

  6. 一起来学Spring Cloud | 第五章:熔断器 ( Hystrix)

    在微服务项目中,一个系统可以分割成很多个不同的服务模块,不同模块之间我们通常需要进行相互调用.springcloud中可以使用RestTemplate+Ribbon和Feign来调用(工作中基本都是使 ...

  7. 全球及中国血液透析行业发展规模与前景动态调研报告2022版

    全球及中国血液透析行业发展规模与前景动态调研报告2022版 -------------------------------------  <出版单位>:鸿晟信合研究院[专员客服对接] &l ...

  8. 中国呼吸道防护劳保用品市场投资效益与销售前景调研报告2022年

    中国呼吸道防护劳保用品市场投资效益与销售前景调研报告2022年 ··························· <修订日期>:2022年1月 <专员对接>:周文文 &l ...

  9. 中国冶金工业节能减排行业十四五投资动态与运营方向调研报告2022-2027年

    中国冶金工业节能减排行业十四五投资动态与运营方向调研报告2022-2027年 ··························· <修订日期>:2022年1月 <专员对接> ...

最新文章

  1. 基础知识巩固四(问题部分)
  2. AppStore发布产品步骤
  3. 亚信科技笔试面试2019届
  4. mmh学长的实验器材
  5. ucinet计算聚类系数大于1怎么办_UCINET 6
  6. Android即时通讯实现原理
  7. Java分销商城微商城源码跨境电商介绍B2B2C系统
  8. win10熄屏时间不对_win10设置了息屏时间但是很快就息屏
  9. C.Lorenzo Von Matterhorn(思维+朴素lca思想)
  10. LSVGlobal Mapper应用----影像下载
  11. 四舍六入五成双并保留一位有效位-数据修约
  12. Redis设计与实现详解二:Redis数据库实现
  13. connection_reset -101
  14. Java线程池几个参数的理解
  15. 小记一次海量数据实时查询域名库设计(上)
  16. CSDN怎么转载别人的博客(转载)
  17. PGP加密,良好隐私密码法
  18. 五、DMSP/OLS和NPP/VIIRS夜间灯光数据拟合校正
  19. CPU系统级验证——验证环境——OpenHW core-v验证环境及文件分析
  20. TMS320C6455的EMIF与FPGA通讯

热门文章

  1. Git版本回退的最佳方式
  2. jlink_v8原理图
  3. 主从博弈论文中关于均衡解证明的写作总结
  4. 英语邮件撰写 | WpEmail笔记 + Additional Resources
  5. 使用 Python 绘制 Log 函数图
  6. 牛逼了!DeepFake变脸再次来袭,强势霸屏GitHub热榜!偏门应用“美女脱衣”还会再出现么?...
  7. python3安装psycopg2
  8. Android判断CPU是32位还是64位
  9. 快捷键使电脑屏幕翻转
  10. TPCC-Mysql 测试