1、前言
在前面我们介绍了 Kong 的一些内容,包括 Key-auth、basic 等插件,想了解的请移步《企业级 API 网关 Kong 系列》
本章我们继续其插件之旅,Limit 限流插件的使用。
2、Rate Limiting
限流的插件使用起来非常简单,它可以分别在 Service、Route、Consumer 上开启,下面我们一一来介绍下。
2.1 Service 上开启
$ curl -X POST http://kong:8001/services/{service}/plugins \
--data "name=rate-limiting"
--data "config.second=5" \
--data "config.hour=10000"
2.2 Route 上开启
$ curl -X POST http://kong:8001/routes/{route}/plugins \
--data "name=rate-limiting"
--data "config.second=5" \
--data "config.hour=10000"
2.3 Consumer 上开启
$ curl -X POST http://kong:8001/consumers/{consumer}/plugins \
--data "name=rate-limiting-advanced" \
--data "config.second=5" \
--data "config.hour=10000"
3 参数列表
参数 | 描述 |
name | 在这种情况下,要使用的插件的名称 rate-limiting-advanced |
service_id | 此插件将定位的服务的 ID。 |
route_id | 此插件将定位的路由的 ID。 |
enabled
默认值:true |
是否将应用此插件。 |
consumer_id | 此插件将定位的 Consumer 的 id。 |
config.limit | 每个窗口应用一个以上的请求 |
config.window_size | 再应用一个窗口大小(以秒为单位定义) |
config.identifier
默认值: |
如何定义速率限制键。可以 ip,credential,consumer,service,或 header。 |
config.header_name 可选 |
|
config.dictionary_name
默认值: |
共享字典,其中计数器将存储到下一个同步周期 |
config.sync_rate | 将计数器数据同步到中央数据存储的频率。值为 0 会导致同步行为; 值 - 1 完全忽略同步行为,仅在节点内存中存储计数器。大于 0 的值将在很多秒内同步计数器。 |
config.namespace 可选的 默认值: |
用于此插件实例的速率限制库名称空间。计数器数据和同步配置在命名空间中共享。 |
config.strategy
默认值: |
要使用的同步策略; cluster 并 redis 得到支持 |
config.redis.host 可选 |
redis 定义策略时用于 Redis 连接的主机 |
config.redis.port 可选 |
redis 定义策略时用于 Redis 连接的端口 |
config.redis.timeout 可选的
默认值: |
redis 定义策略时用于 Redis 连接的连接超时(以毫秒为单位) |
config.redis.password 可选 | redis 定义策略时用于 Redis 连接的密码。如果未定义,则不会向 Redis 发送 AUTH 命令。 |
config.redis.database 可选的
默认值: |
redis 定义策略时用于 Redis 连接的数据库 |
config.redis.sentinel_master 可选 | redis 定义策略时,Sentinel master 用于 Redis 连接。定义此值意味着使用 Redis Sentinel。 |
config.redis.sentinel_role 可选 | redis 定义策略时用于 Redis 连接的 Sentinel 角色。定义此值意味着使用 Redis Sentinel。 |
config.redis.sentinel_addresses 可选 | redis 定义策略时,Sentinel 地址用于 Redis 连接。定义此值意味着使用 Redis Sentinel。 |
config.redis.cluster_addresses 可选 | redis 定义策略时用于 Redis 连接的群集地址。定义此值意味着使 用 Redis 群集。 |
config.window_type
默认值: |
这将时间窗口设置为 sliding 或 fixed |
注意:如果使用 cluster 策略、则忽略 Redis 配置。
将 Cluster 和 postgres 做 kong 集群数据存储时,需要 PostgresSQL9.5+。
想了解更多关于 Kong 网关的请移步 >>>>> 企业级 API 网关 Kong