You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2020/08/06 11:42:54 UTC

[servicecomb-docs] branch master updated: [SCB-2043] update doc for flow control module

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 b3b610b  [SCB-2043] update doc for flow control module
b3b610b is described below

commit b3b610be6d42eee05bc5b769146cee5a4e123b61
Author: GuoYL <gy...@gmail.com>
AuthorDate: Wed Aug 5 11:33:37 2020 +0800

    [SCB-2043] update doc for flow control module
---
 .../zh_CN/docs/build-consumer/flow-control.md      |  7 ++++++
 .../configuration/ratelimite-strategy.md           | 27 ++++++++++++++++++++++
 2 files changed, 34 insertions(+)

diff --git a/java-chassis-reference/zh_CN/docs/build-consumer/flow-control.md b/java-chassis-reference/zh_CN/docs/build-consumer/flow-control.md
index bba55b4..7e1fbf6 100644
--- a/java-chassis-reference/zh_CN/docs/build-consumer/flow-control.md
+++ b/java-chassis-reference/zh_CN/docs/build-consumer/flow-control.md
@@ -25,5 +25,12 @@ QPS流控配置项说明
 | servicecomb.flowcontrol.Consumer.qps.enabled | true | Boolean | 否 | 是否启用Consumer流控 | - |
 | servicecomb.flowcontrol.Consumer.qps.limit.\[ServiceName\].\[Schema\].\[operation\] | 2147483647  \(max int\) | \(0,2147483647\],整形 | 否 | 每秒钟允许的请求数 | 支持microservice、schema、operation三个级别的配置 |
 
+2.1.1版本流控配置变更:
 
+| 配置项 | 默认值 | 取值范围 | 是否必选 | 含义 | 注意 |
+| :--- | :--- | :--- | :--- | :--- | :--- |
+| servicecomb.flowcontrol.Consumer.qps.strategy | FixedWindow | FixedWindow/LeakyBucket/TokenBucket/自定义 | 否 | 流控策略 | - |
+| servicecomb.flowcontrol.Consumer.qps.enabled | true | Boolean | 否 | 是否启用Consumer流控 | - |
+| servicecomb.flowcontrol.Consumer.qps.limit.\[ServiceName\].\[Schema\].\[operation\] | 2147483647  \(max int\) | \(0,2147483647\],整形 | 否 | 每秒钟允许的请求数 | 支持microservice、schema、operation三个级别的配置 |
+| servicecomb.flowcontrol.Consumer.qps.bucket.\[ServiceName\].\[Schema\].\[operation\] | 两倍limit大小,不超过max int | \(0,2147483647\],整形 | 否 | 令牌桶场景下桶的大小 | 支持microservice/schema/operation三个级别的配置,后者的优先级高于前者 |
 
diff --git a/java-chassis-reference/zh_CN/docs/build-provider/configuration/ratelimite-strategy.md b/java-chassis-reference/zh_CN/docs/build-provider/configuration/ratelimite-strategy.md
index e842e4c..fdc26ce 100644
--- a/java-chassis-reference/zh_CN/docs/build-provider/configuration/ratelimite-strategy.md
+++ b/java-chassis-reference/zh_CN/docs/build-provider/configuration/ratelimite-strategy.md
@@ -8,6 +8,18 @@
 2. provider端的流量控制是业务层面的功能,不是安全意义上的流量控制,如需防止DDoS攻击,需要结合其他的一系列措施。
 3. 流量控制是微服务级的,不是实例级的。例如一个consumer服务有三个实例,当对它们依赖的provider实例配置限流策略后,provider不会区分consumer的请求具体是由哪个实例发出的,而是汇总成微服务级的统计数据进行限流判断。
 
+## 流控算法说明
+
+2.1.1版本之前,不提供流控策略的选择,默认流控实现算法是固定窗口算法。
+2.1.1版本以及之后,提供流控测流供选择,默认提供固定窗口算法、漏桶算法、令牌桶算法,且支持用户自定义流控策略实现。
+
+算法说明:
+   * 固定窗口算法:默认窗口大小为1s,最大可能产生2倍于指定流量设置大小的误差。
+   * 令牌桶算法:令牌桶的主要思想是,设置一个固定大小的桶,以恒定速率向里面加入令牌,每次新请求到来时从里面取一个令牌出来,如果没有令牌可取,则请求直接失败(被限流)。
+   * 漏桶算法:漏桶算法的主要思想是,设置一个固定大小的桶,请求不断加入桶中同时以固定大小从桶内部流出,如果达到桶的极限大小,则请求溢出(失败)。
+              在内部实现上漏桶算法与令牌桶算法的实现原理相同,根据设置的桶大小不同,能承载的突发流量不同。
+   * 用户自定义流控算法:可以[参考实现](https://github.com/apache/servicecomb-java-chassis/blob/master/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/MyStrategyFactory.java),以及该demo下的配置方法。
+   
 ## 配置说明
 
 限流策略配置在microservice.yaml文件中,相关配置项见表**QPS流控配置项说明**。要开启服务提供者端的限流策略,还需要在处理链中配置服务端限流handler,并添加pom依赖。
@@ -37,6 +49,21 @@
 | servicecomb.flowcontrol.Provider.qps.limit.\[ServiceName\].\[Schema\].\[operation\] | 2147483647(max int) | \(0,2147483647\],整形 | 否 | 每秒钟允许的请求数 | 支持microservice/schema/operation三个级别的配置,后者的优先级高于前者 |
 | servicecomb.flowcontrol.Provider.qps.global.limit | 2147483647(max int) | \(0,2147483647\],整形 | 否 | provider接受请求流量的全局配置 | 没有具体的流控配置时,此配置生效 |
 
+
+2.1.1版本流控配置变更:
+
+| 配置项 | 默认值 | 取值范围 | 是否必选 | 含义 | 注意 |
+| :--- | :--- | :--- | :--- | :--- | :--- |
+| servicecomb.flowcontrol.Provider.qps.strategy | FixedWindow | FixedWindow/LeakyBucket/TokenBucket/自定义 | 否 | 流控策略 | - |
+| servicecomb.flowcontrol.Provider.qps.enabled | true | true/false | 否 | 是否启用Provider流控 | - |
+| servicecomb.flowcontrol.Provider.qps.limit.\[ServiceName\].\[Schema\].\[operation\] | 2147483647(max int) | \(0,2147483647\],整形 | 否 | 每秒钟允许的请求数 | 支持microservice/schema/operation三个级别的配置,后者的优先级高于前者 |
+| servicecomb.flowcontrol.Provider.qps.global.limit | 2147483647(max int) | \(0,2147483647\],整形 | 否 | provider接受请求流量的全局配置 | 没有具体的流控配置时,此配置生效 |
+| servicecomb.flowcontrol.Provider.qps.bucket.\[ServiceName\].\[Schema\].\[operation\] | 两倍limit大小,不超过max int | \(0,2147483647\],整形 | 否 | 令牌桶场景下桶的大小 | 支持microservice/schema/operation三个级别的配置,后者的优先级高于前者 |
+| servicecomb.flowcontrol.Provider.qps.global.bucket | 两倍limit大小,不超过max int | \(0,2147483647\],整形 | 否 | 令牌桶场景下provider桶的大小 | 没有具体的流控配置时,此配置生效 |
+
+> **注意:**
+> strategy是全局的策略选择,一旦选择所有流控接口都会应用统一的流控策略,且不支持动态配置变更,如果变更流控策略需要重启服务。
+
 > **注意:**
 > provider端限流策略配置中的`ServiceName`指的是调用该provider的consumer,而`schema`、`operation`指的是provider自身的。即provider端限流配置的含义是,限制指定consumer调用本provider的某个schema、operation的流量。