You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by GitBox <gi...@apache.org> on 2022/10/27 07:18:27 UTC

[GitHub] [apisix] SylviaBABY commented on a diff in pull request #8154: docs: update limit plugin docs

SylviaBABY commented on code in PR #8154:
URL: https://github.com/apache/apisix/pull/8154#discussion_r1006481091


##########
docs/zh/latest/plugins/limit-conn.md:
##########
@@ -28,21 +28,21 @@ description: 本文介绍了 Apache APISIX limit-conn 插件的相关操作,
 
 ## 描述
 
-`limit-conn` 插件用于限制客户端对服务的并发请求数。
+`limit-conn` 插件用于限制客户端对单个服务的并发请求数。当客户端对路由的并发请求数达到限制时,可以返回自定义的状态码和响应信息。
 
 ## 属性
 
-| 名称               | 类型    | 必选项   | 默认值 | 有效值                                                                                    | 描述                                                                                                                                                                                                       |
-| ------------------ | ------- | -------- | ------ | ----------------------------------------------------------------------------------------- |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| conn               | integer | 是 |        | conn > 0                                                                                  | 允许的最大并发请求数。超过 `conn` 的限制、但是低于 `conn` + `burst` 的请求,将被延迟处理。                                                                                                                                               |
-| burst              | integer | 是 |        | burst >= 0                                                                                | 每秒允许被延迟处理的额外并发请求数。                                                                                                                                                                                           |
-| default_conn_delay | number  | 是 |        | default_conn_delay > 0                                                                    | 默认的典型连接(或请求)的处理延迟时间。                                                                                                                                                                                     |
-| only_use_default_delay  | boolean | 否 | false  | [true,false]                                                                              | 延迟时间的严格模式。 当设置为 `true` 时,将会严格按照设置的 `default_conn_delay` 时间来进行延迟处理。                                                                                                                                                                |
-| key_type      | string | 否   |  "var"      | ["var", "var_combination"]                                          | `key` 的类型                                                                                                                                                                                                  |
-| key           | string  | 是   |        |  | 用来做请求计数的依据。如果 `key_type` 为 `"var"`,那么 `key` 会被当作变量名称,如 `remote_addr` 和 `consumer_name`;如果 `key_type` 为 `"var_combination"`,那么 `key` 会当作变量组合,如 `$remote_addr $consumer_name`;如果 `key` 的值为空,`$remote_addr` 会被作为默认 `key`。 |
-| rejected_code      | string  | 否 | 503    | [200,...,599]                                                                             | 当请求数超过 `conn` + `burst` 阈值时,返回的 HTTP 状态码。                                                                                                                                                                |
-| rejected_msg       | string | 否                                |            | 非空                                          | 当请求数超过 `conn` + `burst` 阈值时,返回的响应体。                                                                                                                                                                     |
-| allow_degradation              | boolean  | 否                                | false       |                                                                     | 当设置为 `true` 时,启用插件降级并自动允许请求继续。                                                                                                                                                    |
+| 名称               | 类型    | 必选项 | 默认值 | 有效值                      | 描述                                                                                                                                                                                                       |
+| ------------------ | ------- | ----- | ------ | -------------------------- |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| conn               | integer | 是    |        | conn > 0                   | 允许的最大并发请求数。超过 `conn` 的限制、但是低于 `conn` + `burst` 的请求,将被延迟处理。                                                                                                                       |
+| burst              | integer | 是    |        | burst >= 0                 | 每秒允许被延迟处理的额外并发请求数。                                                                                                                                                                          |
+| default_conn_delay | number  | 是    |        | default_conn_delay > 0     | 默认的典型连接(或请求)的处理延迟时间。                                                                                                                                                                      |
+| only_use_default_delay | boolean | 否 | false | [true,false]               | 延迟时间的严格模式。 当设置为 `true` 时,将会严格按照设置的 `default_conn_delay` 时间来进行延迟处理。                                                                                                              |

Review Comment:
   ```suggestion
   | only_use_default_delay | boolean | 否 | false | [true,false]               | 延迟时间的严格模式。当设置为 `true` 时,将会严格按照设置的 `default_conn_delay` 时间来进行延迟处理。                                                                                                              |
   ```



##########
docs/zh/latest/plugins/limit-count.md:
##########
@@ -29,29 +29,29 @@ description: 本文介绍了 Apache APISIX limit-count 插件的相关操作,
 
 ## 描述
 
-`limit-count` 插件用于限制客户端在指定的时间范围内对服务的总请求数,并且在 HTTP 响应头中返回剩余可以请求的个数。该插件的原理与 [GitHub API 的速率限制](https://docs.github.com/en/rest/reference/rate-limit)类似。
+`limit-count` 插件使用固定时间窗口算法,主要用于限制**单个客户端**在指定的时间范围内对服务的总请求数,并且会在 HTTP 响应头中返回剩余可以请求的个数。该插件原理与 [GitHub API 的速率限制](https://docs.github.com/en/rest/reference/rate-limit)类似。
 
 ## 属性
 
-| 名称                | 类型    | 必选项                               | 默认值        | 有效值                                                                                                  | 描述                                                                                                                                                                                                                                                                                                                                                                                                                  |
-| ------------------- | ------- | --------------------------------- | ------------- | ------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| count               | integer | 是                               |               | count > 0                                                                                               | 每个客户端在指定时间窗口内的总请求数量阈值。                                                                                                                                                                                                                                                                                                                                                                                          |
-| time_window         | integer | 是                               |               | time_window > 0                                                                                         | 时间窗口的大小(以秒为单位),。超过该属性定义的时间,则会重新开始计数。                                                                                                                                                                                                                                                                                                                                                                    |
-| key_type      | string | 否   |  "var"      | ["var", "var_combination", "constant"]                                          | key 的类型。 |
-| key           | string  | 否   |    "remote_addr"    |  | 用来做请求计数的依据。如果 `key_type` 为 `constant`,那么 key 会被当作常量;如果 `key_type` 为 `var`,那么 key 会被当作变量;如果 `key_type` 为 `var_combination`,那么 key 会被当作变量组合,如 `$remote_addr $consumer_name`,插件会同时受 `$remote_addr` 和 `$consumer_name` 两个变量的约束;如果 key 的值为空,`$remote_addr` 会被作为默认 key。 |
-| rejected_code       | integer | 否                               | 503           | [200,...,599]                                                                                           | 当请求超过阈值被拒绝时,返回的 HTTP 状态码。                                                                                                                                                                                                                                                                                                                                                                            |
-| rejected_msg       | string | 否                                |            | 非空                                                                                           | 当请求超过阈值被拒绝时,返回的响应体。                                                                                                                                                                                                             |
-| policy              | string  | 否                               | "local"       | ["local", "redis", "redis-cluster"]                                                                     | 用于检索和增加限制计数的策略。当设置为 `local` 时,计数器被以内存方式保存在节点本地;当设置为 `redis` 时,计数器保存在 Redis 服务节点上,从而可以跨节点共享结果,通常用它来完成全局限速;当设置为 `redis-cluster` 时,使用 Redis 集群而不是单个实例。                                                                                                                                                        |
-| allow_degradation              | boolean  | 否                                | false       |                                                                     | 当插件功能临时不可用时(例如 Redis 超时),当设置为 `true` 时,则表示可以允许插件降级并进行继续请求的操作。 |
-| show_limit_quota_header              | boolean  | 否                                | true       |                                                                     | 当设置为 `true` 时,在响应头中显示 `X-RateLimit-Limit`(限制的总请求数)和 `X-RateLimit-Remaining`(剩余还可以发送的请求数)字段。 |
-| group               | string | 否                                |            | 非空                                                                                           | 配置相同 group 的路由将共享相同的限流计数器。 |
-| redis_host          | string  | 否                      |               |                                                                                                         | 当使用 `redis` 限速策略时,Redis 服务节点的地址。**当 `policy` 属性设置为 `redis` 时必选。**                                                                                                                                                                                                                                                                                                                                                         |
-| redis_port          | integer | 否                               | 6379          | [1,...]                                                                                                 | 当使用 `redis` 限速策略时,Redis 服务节点的端口。                                                                                                                                                                                                                                                                                                                                                              |
-| redis_password      | string  | 否                               |               |                                                                                                         | 当使用 `redis`  或者 `redis-cluster`  限速策略时,Redis 服务节点的密码。                                                                                                                                                                                                                                                                                                                                                            |
-| redis_database      | integer | 否                               | 0             | redis_database >= 0                                                                                     | 当使用 `redis` 限速策略时,Redis 服务节点中使用的 `database`,并且只针对非 Redis 集群模式(单实例模式或者提供单入口的 Redis 公有云服务)生效。                                                                                                                                                                                                                                                                 |
-| redis_timeout       | integer | 否                               | 1000          | [1,...]                                                                                                 | 当 `policy` 设置为 `redis` 或 `redis-cluster` 时,Redis 服务节点的超时时间(以毫秒为单位)。                                                                                                                                                                                                                                                                                                                                              |
-| redis_cluster_nodes | array   |  否  |               |                                                                                                         | 当使用 `redis-cluster` 限速策略时,Redis 集群服务节点的地址列表(至少需要两个地址)。**当 `policy` 属性设置为 `redis-cluster` 时必选。**                                                                                                                                                                                                                                                                                                                                           |
-| redis_cluster_name  | string  |  否  |               |                                                                                                         | 当使用 `redis-cluster` 限速策略时,Redis 集群服务节点的名称。**当 `policy` 设置为 `redis-cluster` 时必选。**                                                                                                                                                                                                                                                                                                                                          |
+| 名称                | 类型    | 必选项      | 默认值        | 有效值                                   | 描述                                                                                                                                                                                                                                 |
+| ------------------- | ------- | ---------- | ------------- | --------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| count               | integer | 是        |                | count > 0                               | 每个客户端在指定时间窗口内的总请求数量阈值。|
+| time_window         | integer | 是        |                | time_window > 0                         | 时间窗口的大小(以秒为单位),。超过该属性定义的时间,则会重新开始计数。|

Review Comment:
   ```suggestion
   | time_window         | integer | 是        |                | time_window > 0                         | 时间窗口的大小(以秒为单位)。超过该属性定义的时间,则会重新开始计数。|
   ```



##########
docs/zh/latest/plugins/limit-req.md:
##########
@@ -29,20 +29,20 @@ description: limit-req 插件使用漏桶算法限制对用户服务的请求速
 
 ## 描述
 
-`limit-req` 插件使用漏桶算法限制对用户服务的请求速率。
+`limit-req` 插件使用[漏桶算法](https://baike.baidu.com/item/%E6%BC%8F%E6%A1%B6%E7%AE%97%E6%B3%95/8455361)限制单个客户端对服务的请求速率。
 
 ## 属性
 
-| 名称          | 类型    | 必选项 | 默认值 | 有效值                                                                   | 描述                                                                                                                                              |
-| ------------- | ------- | ------ | ------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------- |
-| rate          | integer | 是   |        | rate > 0                                                                | 指定的请求速率(以秒为单位),请求速率超过 `rate` 但没有超过(`rate` + `burst`)的请求会被加上延时。                                             |
-| burst         | integer | 是   |        | burst >= 0                                                              | 请求速率超过(`rate` + `burst`)的请求会被直接拒绝。                                                                                            |
-| key_type      | string  | 否   | "var"  | ["var", "var_combination"]                                              | 要使用的用户指定 `key` 的类型。              |
+| 名称          | 类型    | 必选项 | 默认值 | 有效值                                                                                  | 描述                                                                                                                                              |
+| ------------- | ------- | ------ | ------ | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
+| rate          | integer | 是   |        | rate > 0                                                                                | 指定的请求速率(以秒为单位),请求速率超过 `rate` 但没有超过(`rate` + `burst`)的请求会被延时处理。|
+| burst         | integer | 是   |        | burst >= 0                                                                              | 请求速率超过(`rate` + `burst`)的请求会被直接拒绝。|
+| key_type      | string  | 否   | "var"  | ["var", "var_combination"]                                                               | 要使用的用户指定 `key` 的类型。              |
 | key           | string  | 是   |        | ["remote_addr", "server_addr", "http_x_real_ip", "http_x_forwarded_for", "consumer_name"] | 用来做请求计数的依据,当前接受的 `key` 有:`remote_addr`(客户端 IP 地址),`server_addr`(服务端 IP 地址), 请求头中的 `X-Forwarded-For` 或 `X-Real-IP`,`consumer_name`(Consumer 的 `username`)。 |
-| rejected_code | integer | 否   | 503    | [200,...,599]                                                              | 当超过阈值的请求被拒绝时,返回的 HTTP 状态码。                                                                                                        |
-| rejected_msg       | string | 否                                |            | 非空                                          | 当超过阈值的请求被拒绝时,返回的响应体。                                                                                                                                                                                                             |
-| nodelay       | boolean | 否   | false  |                                                                         | 如果设置为 `true`, 请求速率超过 `rate` 但没有超过(`rate` + `burst`)的请求不会加上延迟;如果设置为 `false`,则会加上延迟。 |
-| allow_degradation              | boolean  | 否                                | false       |                                                                     | 当限速插件功能临时不可用时是否允许请求继续。如果设置为 `true`,则自动允许请求继续。|
+| rejected_code | integer | 否   | 503    | [200,...,599]                                                                             | 当超过阈值的请求被拒绝时,返回的 HTTP 状态码。|
+| rejected_msg  | string | 否    |        | 非空                                                                                      | 当超过阈值的请求被拒绝时,返回的响应体。|
+| nodelay       | boolean | 否   | false  |                                                                                           | 当设置为 `true` 时,请求速率超过 `rate` 但没有超过(`rate` + `burst`)的请求不会加上延迟;当设置为 `false`,则会加上延迟。 |
+| allow_degradation | boolean | 否 | false |                                                                                          | 当设置为 `true` 时,如果限速插件功能临时不可用时,将会自动允许请求继续。|

Review Comment:
   ```suggestion
   | allow_degradation | boolean | 否 | false |                                                                                          | 当设置为 `true` 时,如果限速插件功能临时不可用,将会自动允许请求继续。|
   ```



##########
docs/zh/latest/plugins/limit-req.md:
##########
@@ -73,6 +74,8 @@ curl http://127.0.0.1:9180/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f13
 }'
 ```
 
+上述示例表示,APISIX 将客户端的 IP 地址作为限制请求速率的条件,当请求速率小于 3 次每秒(`rate`)时,请求正常;当请求速率大于 3 次每秒(`rate`),小于 5 次每秒(`rate + burst`)时,将会对超出部分的请求进行延迟处理;当请求速率大于 5 次每秒(`rate + burst`)时,超出规定数量的请求将返回 HTTP 状态码 503。

Review Comment:
   ```suggestion
   上述示例表示,APISIX 将客户端的 IP 地址作为限制请求速率的条件,当请求速率小于 3 次每秒(`rate`)时,请求正常;当请求速率大于 3 次每秒(`rate`),小于 5 次每秒(`rate + burst`)时,将会对超出部分的请求进行延迟处理;当请求速率大于 5 次每秒(`rate + burst`)时,超出规定数量的请求将返回 HTTP 状态码 `503`。
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@apisix.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org