API网关Kong系列十-Rate-Limiting

30次阅读

共计 1975 个字符,预计需要花费 5 分钟才能阅读完成。

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 参数列表

<td 标头名称,在 header 定义标识符时用作速率限制键。>

参数 描述
name 在这种情况下,要使用的插件的名称 rate-limiting-advanced
service_id 此插件将定位的服务的 ID。
route_id 此插件将定位的路由的 ID。
enabled

默认值:true

是否将应用此插件。
consumer_id 此插件将定位的 Consumer 的 id。
config.limit 每个窗口应用一个以上的请求
config.window_size 再应用一个窗口大小(以秒为单位定义)
config.identifier

默认值:
consumer

如何定义速率限制键。可以 ip,credential,consumer,service,或 header。
config.header_name
可选
config.dictionary_name

默认值:
kong_rate_limiting_counters

共享字典,其中计数器将存储到下一个同步周期
config.sync_rate 将计数器数据同步到中央数据存储的频率。值为 0 会导致同步行为; 值 - 1 完全忽略同步行为,仅在节点内存中存储计数器。大于 0 的值将在很多秒内同步计数器。
config.namespace
可选的

默认值:
随机字符串

用于此插件实例的速率限制库名称空间。计数器数据和同步配置在命名空间中共享。
config.strategy

默认值:
cluster

要使用的同步策略; cluster 并 redis 得到支持
config.redis.host
可选
redis 定义策略时用于 Redis 连接的主机

config.redis.port
可选
redis 定义策略时用于 Redis 连接的端口
config.redis.timeout 可选的

默认值:
2000

redis 定义策略时用于 Redis 连接的连接超时(以毫秒为单位)
config.redis.password 可选 redis 定义策略时用于 Redis 连接的密码。如果未定义,则不会向 Redis 发送 AUTH 命令。

config.redis.database 可选的

默认值:
0

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

这将时间窗口设置为 sliding 或 fixed

注意:如果使用 cluster 策略、则忽略 Redis 配置。
将 Cluster 和 postgres 做 kong 集群数据存储时,需要 PostgresSQL9.5+。

想了解更多关于 Kong 网关的请移步 >>>>> 企业级 API 网关 Kong

正文完
 0