This is an automated email from the ASF dual-hosted git repository.

liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-docs.git


The following commit(s) were added to refs/heads/master by this push:
     new 81f598d  update traffic governance (#276)
81f598d is described below

commit 81f598daddad6329f67a07272b89839ccc64c71f
Author: liubao68 <[email protected]>
AuthorDate: Wed Sep 14 08:59:14 2022 +0800

    update traffic governance (#276)
---
 .../zh_CN/docs/references-handlers/governance.md   | 116 ++++++++++++++++++++-
 .../zh_CN/docs/references-handlers/loadbalance.md  |  29 ------
 java-chassis-reference/zh_CN/mkdocs.yml            |   2 +-
 3 files changed, 113 insertions(+), 34 deletions(-)

diff --git 
a/java-chassis-reference/zh_CN/docs/references-handlers/governance.md 
b/java-chassis-reference/zh_CN/docs/references-handlers/governance.md
index 16c879b..957c668 100644
--- a/java-chassis-reference/zh_CN/docs/references-handlers/governance.md
+++ b/java-chassis-reference/zh_CN/docs/references-handlers/governance.md
@@ -1,6 +1,6 @@
-# 基于动态配置的流量特征治理
+# 流量特征治理
 
-基于动态配置的流量特征治理旨在提供一种通用的,适合不同语言、不同微服务开发框架的治理规则。治理规则规定了微服务治理的过程、治理的策略,
+流量特征治理旨在提供一种通用的,适合不同语言、不同微服务开发框架的治理规则。治理规则规定了微服务治理的过程、治理的策略,
 可以使用不同的开发框架、技术实现治理规则约定的治理能力。
 
 开发者可以在 [ServiceComb Java Chassis][java-chassis], [Go 
Chassis][go-chassis],[Spring Cloud][spring-cloud],
@@ -9,10 +9,118 @@
 [ServiceComb Java Chassis][java-chassis] 提供了实现 SDK,可以将其用于其他开发框架。SDK 默认采用 
[Resilience4j][resilience4j]
 实现治理过程。规范没有约束治理过程的实现框架,可以很方便的使用其他的治理框架实现治理过程。 
 
-基于动态配置的流量特征治理详细概念和开发指南请参考[微服务引擎开发指南](https://support.huaweicloud.com/devg-cse/cse_devg_0026.html)
+流量特征治理[概念和规范参考](https://github.com/huaweicloud/spring-cloud-huawei/wiki/using-governance)
 
 [java-chassis]: https://github.com/apache/servicecomb-java-chassis
 [go-chassis]: https://github.com/go-chassis/go-chassis
 [spring-cloud]: https://github.com/huaweicloud/spring-cloud-huawei
 [dubbo]: https://github.com/huaweicloud/dubbo-servicecomb
-[resilience4j]: https://github.com/resilience4j
\ No newline at end of file
+[resilience4j]: https://github.com/resilience4j
+
+## 使用客户端熔断
+
+在 `Handler` 中包含客户端熔断处理链:
+
+```yaml
+servicecomb:
+  handler:
+    chain:
+      Consumer:
+        default: loadbalance,instance-isolation-consumer
+```
+
+配置参数:
+
+```
+servicecomb:
+  instanceIsolation:
+    allOperation: |
+      minimumNumberOfCalls: 10
+      slidingWindowSize: 20
+      slidingWindowType: COUNT_BASED
+      failureRateThreshold: 50
+      slowCallRateThreshold: 100
+      slowCallDurationThreshold: 3000
+      waitDurationInOpenState: 10000 
+      permittedNumberOfCallsInHalfOpenState: 10
+```
+
+上诉参数使用计算滑动窗口,如果错误率超过50%,就会进行熔断。
+
+## 使用客户端隔离仓
+
+在 `Handler` 中包含客户端熔断处理链:
+
+```yaml
+servicecomb:
+  handler:
+    chain:
+      Consumer:
+        default: loadbalance,instance-bulkhead-consumer
+```
+
+配置参数:
+
+```
+servicecomb:
+  instanceBulkhead:
+    allOperation: |
+      maxConcurrentCalls: 20
+      maxWaitDuration: 1000
+```
+
+上诉参数控制最大并发数为20,超过的请求会等待1000毫秒以获取许可,如果得到许可,可以继续处理,否则会拒绝请求。
+
+## 使用重试
+
+配置参数:
+
+```yaml
+servicecomb:
+  retry:
+    allOperation: |
+      maxAttempts: 2
+      retryOnSame: 0
+```
+
+maxAttempts表示最大重试次数(不包括第1次调用),retryOnSame表示使用第1次调用的实例进行重试次数。后续的重试会根据负载均衡策略,重新选择一个新的实例重试(也可能选择到同一个实例)。
 
+
+**注意事项:**
+
+* 并不是所有的异常都会触发重试。缺省的情况,只有网络异常,或者 502,503 错误码才会触发重试。 详细可以参考 
`ServiceCombRetryExtension` 的定义。
+
+## 组合使用
+
+一个比较好的实践是组合使用 `重试` 、 `客户端熔断` 和 `客户端隔离仓`。
+
+```yaml
+servicecomb:
+  handler:
+    chain:
+      Consumer:
+        default: 
loadbalance,instance-isolation-consumer,instance-bulkhead-consumer
+```
+
+这种组合可以防止偶然的实例错误导致的失败,也可以防止单个实例处理能力下降(比如刚刚启动的实例、故障的实例等场景)导致的整体故障。
+
+```
+servicecomb:
+  retry:
+    allOperation: |
+      maxAttempts: 2
+      retryOnSame: 0
+  instanceIsolation:
+    allOperation: |
+      minimumNumberOfCalls: 10
+      slidingWindowSize: 20
+      slidingWindowType: COUNT_BASED
+      failureRateThreshold: 50
+      slowCallRateThreshold: 100
+      slowCallDurationThreshold: 3000
+      waitDurationInOpenState: 10000 
+      permittedNumberOfCallsInHalfOpenState: 10
+  instanceBulkhead:
+    allOperation: |
+      maxConcurrentCalls: 20
+      maxWaitDuration: 1000
+```
diff --git 
a/java-chassis-reference/zh_CN/docs/references-handlers/loadbalance.md 
b/java-chassis-reference/zh_CN/docs/references-handlers/loadbalance.md
index 5c5310d..a9c42dd 100644
--- a/java-chassis-reference/zh_CN/docs/references-handlers/loadbalance.md
+++ b/java-chassis-reference/zh_CN/docs/references-handlers/loadbalance.md
@@ -179,35 +179,6 @@ servicecomb:
       successiveFailedTimes: 5 # 客户端失败次数,超过后会切换服务器
 ```
 
-## 设置重试策略
-负载均衡模块还支持配置失败重试的策略。
-```yaml
-servicecomb:
-  loadbalance:
-    retryEnabled: false
-    retryOnNext: 0
-    retryOnSame: 0
-```
-缺省情况未启用重试。同时也支持对不同的服务设置特殊的策略:
-```yaml
-servicecomb:
-  loadbalance:
-    myservice:
-      retryEnabled: true
-      retryOnNext: 1
-      retryOnSame: 0
-```
-
-retryOnNext表示失败以后,根据负载均衡策略,重新选择一个实例重试(可能选择到同一个实例)。 
retryOnSame表示仍然使用上次失败的实例进行重试。
-
-**注意事项:**
-
-​     1.并不是所有的异常都会触发重试。缺省的情况,只有网络异常,或者 503 错误码才会触发重试。 详细可以参考 
`DefaultRetryExtensionsFactory` 的定义。
-
-​     2.retry的场景下,对于同步调用, 
同步调用的主线程已经被挂起,无法再主线程中进行重试,重试也不能在网络线程(event-loop)中进行,未被保护的阻塞操作会导致网络线程挂起,因此当前的重试机制会另起一个retry-pool-thread进行重试,因此如果业务在扩展`HttpClientFilter`的时候,如果涉及到通过ThreadLocal获取线程上下文的时候,会存在获取不到的情况,针对这种场景,建议在获取的时候做个判断处理,或者针对涉及ThreadLocal获取线程上下文的业务场景,建议采取通过扩展Handler的机制,进行处理,并保证扩展的Handler在loadbalance之前执行。
-
-​     
3.如果代码中引入了solution-basic依赖,重试默认开启,详细配置可以参考该依赖里面的[配置文件](https://github.com/apache/servicecomb-java-chassis/blob/master/solutions/solution-basic/src/main/resources/microservice.yaml)
 。
-
 ## 自定义
 
负载均衡模块提供的功能已经非常强大,能够通过配置支持大部分应用场景。同时它也提供了强大的扩展能力,包括DiscoveryFilter、ServerListFilterExt、ExtensionsFactory(扩展IRule,RetryHandler等)。loadbalance模块本身包含了每一个扩展的实现,这里不再详细描述如何扩展,只简单描述步骤。开发者可以自行下载ServiceComb源码进行参考。
 
diff --git a/java-chassis-reference/zh_CN/mkdocs.yml 
b/java-chassis-reference/zh_CN/mkdocs.yml
index 1737a3c..9a4de66 100644
--- a/java-chassis-reference/zh_CN/mkdocs.yml
+++ b/java-chassis-reference/zh_CN/mkdocs.yml
@@ -33,7 +33,7 @@ nav:
       - 灰度发布: references-handlers/router.md
       - 故障注入: references-handlers/fault-injection.md
       - 隔离熔断容错: references-handlers/bizkeeper.md
-      - 基于动态配置的流量特征治理: references-handlers/governance.md
+      - 流量特征治理: references-handlers/governance.md
       - 快速失败和重试: references-handlers/fail-retry.md
 - 网关功能参考:
       - 介绍: edge/open-service.md

Reply via email to