-
Notifications
You must be signed in to change notification settings - Fork 224
circuit breaker provider
服务端熔断主要目的是为了保证服务的高可用,避免因为一个服务不可用导致整个系统的崩溃,从而引发雪崩。
Spring Cloud Huawei的服务端熔断可以用下图表示:
请求
consumer ------REST----X---> provider
<-------X---
------REST----X---> provider
<-------X---
---------熔断开关打开----------
------REST----Y---> provider
<-----熔断返回---
------REST----Y---> provider
<-----熔断返回---
服务端熔断支持API粒度设置,某个接口第三方交互较多且时常有超时异常时,我们可以针对特定的API设置熔断策略;当某个服务配置较低时,我们也可以针对服务设置全路径熔断。
servicecomb:
matchGroup:
AllOperation: |
matches:
- apiPath:
prefix: "/"
circuitBreaker:
AllOperation: |
minimumNumberOfCalls: 10
slidingWindowSize: 10
slidingWindowType: COUNT_BASED
failureRateThreshold: 20
上述配置对所有客户端启用了服务端熔断策略。 该策略采用COUNT_BASED滑动窗口策略,窗口大小为10个请求,到达 10个请求的时候,开始计算错误率,如果错误率达到20%,就会对后续请求进行熔断。默认的滑动窗口策略是 TIME_BASED。
可以针对不同的微服务设置差异化的熔断策略:
servicecomb:
matchGroup:
ConsumerAllOperation: |
matches:
- apiPath:
prefix: "/"
serviceName: consumer
circuitBreaker:
ConsumerAllOperation: |
minimumNumberOfCalls: 10
slidingWindowSize: 10
slidingWindowType: COUNT_BASED
failureRateThreshold: 20
上述配置的熔断策略应用于consumer调用provider的情况。其他客户端调用的时候,不会生效。
可以针对不同的API设置差异化的熔断策略:
servicecomb:
matchGroup:
ConsumerApiOperation: |
matches:
- apiPath:
prefix: "/api"
circuitBreaker:
ConsumerApiOperation: |
minimumNumberOfCalls: 10
slidingWindowSize: 10
slidingWindowType: COUNT_BASED
failureRateThreshold: 20
上述配置的熔断策略应用于所有客户端调用服务端/api前缀接口情况。其他接口调用的时候,不会生效。
可以在 Spring Cloud Gateway 使用客户端熔断策略。
servicecomb:
circuitBreaker:
PrivderAllOperation: |
minimumNumberOfCalls: 100
slidingWindowSize: 100
slidingWindowType: TIME_BASED
failureRateThreshold: 50
slowCallRateThreshold: 100
waitDurationInOpenState: 60000
slowCallDurationThreshold: 60000
recordFailureStatus:
- 502
- 503
permittedNumberOfCallsInHalfOpenState: 10
forceClosed: false
forceOpen: false
可以配置 recordFailureStatus
来指定错误, 也可以通过自定义 AbstractInstanceIsolationExtension
覆盖默认的 SpringCloudInstanceIsolationExtension
来定制错误异常检查机制。 默认的错误类型主要包括
代表网络错误的异常,比如ConnectionException等。
版本要求:1.11.4-2021.0.x/1.11.4-2022.0.x及以上版本。
集成Spring Cloud Huawei以后,默认集成了服务端熔断模块 spring-cloud-starter-huawei-governance
,
只需要通过配置开启具体的服务端熔断策略。
服务端熔断是针对某个接口、某个指定服务的业务,即如果这个接口业务错误率超过限制,那么访问这个接口的请求将直接熔断返回,其他接口正常访问;如果是指定服务全局业务错误率超过限制,那么指定服务的所有请求熔断返回。
-
使用Spring Cloud Huawei功能
-
使用服务治理
-
生态集成
-
迁移改造问题
-
配置参考
-
优秀实践
-
常见问题