Spring Cloud Hystrix 源码学习合集

栏目: Java · 发布时间: 6年前

内容简介:阅读原文可查看文中连接Hystrix: Latency and Fault Tolerance for Distributed Systems

阅读原文可查看文中连接

Hystrix: Latency and Fault Tolerance for Distributed Systems

Spring Cloud Hystrix 源码学习合集

近期逐渐学习了 Hystrix 这位  “守护神” 的部分源码,本文作为 Hystrix 系列的小结篇。

在刚看完一丢丢源码时,Netflix 官方便已宣布进入  “维护模式” ,版本定格在  1.5.18 ,官宣该版本已足够满足现存应用的需求。同时,官方也推荐了  resilience4j  这个活跃项目,另阿里系的  Sentinel  也现也十分火热。

对于早已投产的系统来说,Hystrix 自然是重点,无论是 Zuul 路由,还是 Feign 做服务间的调用,它们都结合了 Hystrix 来守护系统。

下面是几篇粗浅的源码学习文章,学习了其工作原理、守护技能(降级、隔离、熔断)、性能提升(请求缓存、合并)等。因请求合并少用,未做学习。

Hystrix 源码学习收获不小,罗列几点:

  • 工欲善其事,必先利其器&  产生对响应式的兴趣

Hystrix 基于 RxJava 进行实现,RxJava 是一种基于观察者模式的响应式编程框架。花了不少时间对其概念和Hystrix 中所使用的方法做了些学习,产生了学习兴趣。Hystrix 的决策(如熔断、线程池/信号量拒绝)都需要数据支撑,而这些数据就是在各个 Command 执行时不断产生,借着 RxJava 十分便利的收集、聚合。

  • 隔离设计是绝妙的防护罩

在单体应用中,一类服务、一个线程、一个Bug等局部因素压垮整个系统也是屡见不鲜。微服务中,服务间依赖重重,通过隔离,很好的控制住风险范围,再结合请求拒绝和超时控制,有效剔除 “老鼠屎”,避免坏了一锅粥。

同时也见识了线程池隔离,以后需要做类似的事情时也是非常好的参考。

Spring Cloud Hystrix 源码学习合集

  • 特定生命周期存储结构的设计

日常开发也就接触 ThreadLocal 这种 thread-scoped 类型的数据结构,偶尔还得徒手在非父子线程间传递数据。

HystrixRequestContext 的出现令人恍然大悟,设计了 request-scoped 的存储结构,原来任务本身就是线程间信息传递最好的载体,以后就可以设计出  任意生命周期 内的存储结构了。

  • 好的技术产品,拓展性肯定非常好

不同垂直业务场景,需求也是多种多样。良好的拓展性,使得技术产品具备良好的弹性,开发人员可以基于设计的拓展机制实现各项功能。例如:Hystrix 中有很多下面样式的代码,它们设计在了Command执行过程中,默认实现其实啥也没做,但是为开发人员在必要时提供了拓展入口。

executionHook.onStart(...);
eventNotifier.markEvent(...);

而Spring Cloud 全家桶,拓展性更是处处可见,如:Zuul 的过滤器、Feign 对于请求和响应提供的拦截器等。

  • 拥有良好的恢复能力自然更健康

熔断的设计,在服务出现问题时可以起到很好的保护作用,避免压垮服务的最后一根稻草渗透进去。然后逐渐利用 请求探针 试探一下服务,如果恢复健康,则自动关闭熔断。

如果任由请求肆虐,服务早就死翘了吧。

如果使用微服务并已上线,深入学习各组件的原理和原理还是非常有必要,否则遇到问题就只能懵逼,然后重启大法好了。

其他 Spring Cloud 文章:


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据压缩导论(第4版)

数据压缩导论(第4版)

[美] Khalid Sayood / 贾洪峰 / 人民邮电出版社 / 2014-1 / 129.00

数据压缩已经成为信息革命的一门支撑技术,这场革命已经改变了我们的生活,而在此过程中,数据压缩也变得几乎无处不在。从MP3播放器到智能手机,再到数字电视和数字电影,数据压缩几乎成了所有信息技术的必备要素。 近年来,以大数据为标志的互联网技术高歌猛进。数据规模大、产生速度快、来源多样等特性,导致数据存储和处理都前所未有地复杂。《数据压缩导论(第4版)》作为迄今为止数据压缩领域最全面而深入的著作,......一起来看看 《数据压缩导论(第4版)》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换