-
Notifications
You must be signed in to change notification settings - Fork 222
bulkhead client
liubao edited this page Aug 17, 2022
·
1 revision
客户端隔离仓限制某个实例正在处理的请求数。
Spring Cloud Huawei的客户端隔离仓可以用下图表示,治理策略配置在consumer。
请求
consumer ----Thread1--REST----Y---> provider(instance1)
<-------Y---
----Thread2--REST----Y---> provider(instance1)
<-------Y---
----Thread3--REST----X provider(instance1)
<-------X---
----Thread1--REST----Y---> provider(instance1)
<-------Y---
----Thread2--REST----Y---> provider(instance1)
<-------Y---
----Thread3--REST----X provider(instance1)
<-------X---
客户端熔断的主要目的是防止一个实例的请求超时,导致所有的线程资源被这个实例占用,导致系统性故障。
servicecomb:
matchGroup:
allOperation: |
matches:
- apiPath:
prefix: "/"
instanceBulkhead:
## 隔离仓限制正在处理的请求数为20个,新来的请求等待1000毫秒没有获取到
## 许可,将被拒绝。
allOperation: |
maxConcurrentCalls: 20
maxWaitDuration: 1000
上述配置限制发往某个实例的最大正在处理请求数是20,如果超过,这些请求会等待1000毫秒获取许可,得到许可后会继续处理,否则直接拒绝返回失败。
可以针对不同的微服务设置差异化的隔离仓策略:
servicecomb:
matchGroup:
privderAllOperation: |
matches:
- apiPath:
prefix: "/"
serviceName: provider
instanceBulkhead:
privderAllOperation: |
maxConcurrentCalls: 20
maxWaitDuration: 1000
上述配置的隔离仓应用于consumer调用provider的情况。调用其他服务端的时候,不会生效。
可以在 Spring Cloud Gateway 使用客户端隔离仓。
集成Spring Cloud Huawei以后,默认集成了客户端隔离仓模块 spring-cloud-starter-huawei-governance
,
只需要通过配置开启具体的客户端隔离仓策略。
客户端隔离仓是针对某个实例上面的业务,即如果这个实例访问该业务错误率超过限制,那么不再访问这个实例。 如果其他实例该业务仍然可用,那么可以继续访问其他实例的接口。
-
使用Spring Cloud Huawei功能
-
使用服务治理
-
生态集成
-
迁移改造问题
-
配置参考
-
优秀实践
-
常见问题