-
Notifications
You must be signed in to change notification settings - Fork 231
circuit breaker client
liubao edited this page Jun 23, 2022
·
8 revisions
客户端熔断也被称为实例隔离。在客户端请求服务端的某个实例多次失败以后,后续请求不再访问这个实例。
Spring Cloud Huawei的客户端熔断可以用下图表示:
请求
consumer ------REST----X---> provider(instance1)
<-------X---
------REST----X---> provider(instance1)
<-------X---
------REST----Y---> provider(instance2)
<-------Y---
------REST----Y---> provider(instance2)
<-------Y---
------REST----Y---> provider(instance2)
<-------Y---
客户端熔断在无损升级等场景被广泛使用。在升级场景,由于客户端无法即使感知服务端的实例下线,会存在 短暂的服务调用失败。客户端熔断通常会搭配客户端容错来达到无损升级的目的。
servicecomb:
matchGroup:
AllOperation: |
matches:
- apiPath:
prefix: "/"
instanceIsolation:
AllOperation: |
minimumNumberOfCalls: 10
slidingWindowSize: 10
slidingWindowType: COUNT_BASED
failureRateThreshold: 20
上述配置对所有实例启用了客户端熔断策略。 该策略采用COUNT_BASED滑动窗口策略,窗口大小为10个请求,到达 10个请求的时候,开始计算错误率,如果错误率达到20%,就会对后续请求进行熔断。默认的滑动窗口策略是 TIME_BASED。
可以针对不同的微服务设置差异化的熔断策略:
servicecomb:
matchGroup:
PrivderAllOperation: |
matches:
- apiPath:
prefix: "/"
serviceName: privder
instanceIsolation:
PrivderAllOperation: |
minimumNumberOfCalls: 10
slidingWindowSize: 10
slidingWindowType: COUNT_BASED
failureRateThreshold: 20
上述配置的熔断策略应用于consumer调用provider的情况。调用其他服务端的时候,不会生效。
可以在 Spring Cloud Gateway 使用客户端熔断策略。
集成Spring Cloud Huawei以后,默认集成了客户端熔断模块 spring-cloud-starter-huawei-governance
,
只需要通过配置开启具体的客户端熔断策略。
客户端熔断是针对某个实例上面的业务,即如果这个实例访问该业务错误率超过限制,那么不再访问这个实例。 如果其他实例改业务仍然可用,那么继续继续访问其他实例的接口。
-
使用Spring Cloud Huawei功能
-
使用服务治理
-
生态集成
-
迁移改造问题
-
配置参考
-
优秀实践
-
常见问题