这里分类和汇总了欣宸的全部原创(含配套源码):[https://github.com/zq2599/blog_demos](
)
[](
)本篇概览
- 一起深入了解Spring Cloud Gateway的断路器(CircuitBreaker)功能:
-
先聊聊理论
-
再结合官方和大神的信息确定技术栈
-
再动手开发,先实现再验证
-
再趁热打铁,看看它的源码
-
最后,回顾一下有哪些不足(下一篇文章解决这些不足)
[](
)关于断路器(CircuitBreaker)
- 下图来自resilience4j官方文档,介绍了什么是断路器:
-
CLOSED状态时,请求正常放行
-
请求失败率达到设定阈值时,变为OPEN状态,此时请求全部不放行
-
OPEN状态持续设定时间后,进入半开状态(HALE_OPEN),放过部分请求
-
半开状态下,失败率低于设定阈值,就进入CLOSE状态,即全部放行
-
半开状态下,失败率高于设定阈值,就进入OPEN状态,即全部不放行
[](
)确认概念
- 有个概念先确认一下,即Spring Cloud断路器与Spring Cloud Gateway断路器功能不是同一个概念,Spring Cloud Gateway断路器功能还涉及过滤器,即在过滤器的规则下使用断路器:
- 本篇的重点是Spring Cloud Gateway如何配置和使用断路器(CircuitBreaker),因此不会讨论Resilience4J的细节,如果您想深入了解Resilience4J,推荐资料是[Spring Cloud Circuit Breaker](
)
[](
)关于Spring Cloud断路器
- 先看Spring Cloud断路器,如下图,Hystrix、Sentinel这些都是熟悉的概念:
[](
)关于Spring Cloud Gateway的断路器功能
- 来看Spring Cloud Gateway的官方文档,如下图,有几个关键点稍后介绍:
- 上图透露了几个关键信息:
-
Spring Cloud Gateway内置了断路器filter,
-
具体做法是使用Spring Cloud断路器的API,将gateway的路由逻辑封装到断路器中