第 15 章 服务容错保护(2)
丁雪丰
15.2 使用 Resilience4j 实现容错
在理解了基本的容错理念和常见模式后,该进入实践环节了。考虑到在实战中会出现各种出乎意料的情况,除非自己是个久经考验的老手,或者大神级人物,否则还是老老实实使用那些已经被实践验证过的框架吧,避免在别人已经跌到过无数次的地方重复踩坑。
放到以前,说起与服务容错相关的话题,就不得不提 Netflix 开源的 Hystrix,实际上,它就是当时事实上的行业标准。可惜在 2018 年 Netflix 宣布将该项目转入维护状态,不再继续投入开发,它就慢慢从宝座上退了下来。好在有几位后起之秀扛起了大旗,让大家有了其他的选择,它们就是本节要介绍的 Resilience4j,以及后续章节中会提到的阿里开源的 Sentinel。
按照官方自己的介绍,Resilience4j 是受 Hystrix 的启发而开发的轻量级容错库,专门针对 Java 8 和函数式编程设计的。它没有太多依赖,而且简单易用。Resilience4j 提供了断路器、限流、重试、舱壁等常见容错功能实现;通过它的高阶函数(即它提供的装饰器)还可以对函数接口、Lambda 表达式和方法进行增强;而且 Resilience4j 的模块化程度很高,我们可以按需引入其中的核心容错能力。类似 Resilience4j 对 Spring Boot 和 Micronaut 的支持功能也被放到了不同的模块中,根据项目使用的框架来使用即可。表 15-1 罗列了一些 Resilience4j 的模块。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入介绍了 Resilience4j 弹性库的使用方法,以奶茶店的调茶师模块为例,详细讲解了如何实现限流功能。通过配置 RateLimiterConfig、创建 RateLimiterRegistry 和 RateLimiter 对需要限流的代码进行装饰,实现了限流功能。文章还介绍了断路器的配置和使用方法,以及 Resilience4j 容错实现的多个方面,包括舱壁模式的实现方法。此外,还涵盖了 Sentinel 的规则源配置和 Spring Cloud Alibaba 提供的配置支持。总体而言,本文对读者快速了解 Resilience4j 的技术特点具有一定的指导意义。文章内容丰富,涵盖了 Resilience4j 的特点、模块清单以及限流、断路等功能的实现方法。值得一提的是,文章还介绍了 Spring Cloud CircuitBreaker 对 Sentinel 的支持,展示了其在服务容错模式中的应用。对于对容错实现感兴趣的读者来说,本文具有一定的参考价值。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《学透 Spring:从入门到项目实战》
《学透 Spring:从入门到项目实战》
立即购买
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论