Kong Rate Limiting 插件详解

Rate Limiting插件

基本描述:
属性描述
插件作用域服务、路由、全局
适用协议http、https
配置信息:
属性描述
参数描述
name插件名称、此处为rate-limiting
service_id绑定的服务Id
route_id绑定的路由Id
enabled是否启用该插件,默认是true
consumer_id绑定的消费者Id
config.second每秒的限流数
config.minute每分钟的限流数
config.hour每小时的限流数
config.day每天的限流数
config.month每月的限流数
config.year每年的限流数
config.limit_by限制次数的衡量标准,可以取consumer、credential 或 ip,如果不能识别consumer或credential,都按照ip计数,默认是consumer
config.policy限流累加器的计数策略,可以取local、cluster 或 redis,默认是cluster
config.fault_tolerant当第三方数据源出错时,是否启用限流功能,取true时会禁用限流功能,默认是true
config.hide_client_headers是否隐藏消息响应头,默认是false
config.redis_hostredis服务器地址
config.redis_portredis服务器端口
config.redis_passwordredis服务器密码
config.redis_timeout连接redis服务器超时时间
config.redis_databaseredis数据库
使用详情
  • 在服务上添加插件
curl -X POST http://kong:8001/services/{service}/plugins --data "name=rate-limiting" --data "config.second=5" --data "config.hour=10000"
  • 在路由上添加插件
curl -X POST http://kong:8001/routes/{route}/plugins --data "name=rate-limiting" --data "config.second=5" --data "config.hour=10000"
  • 在消费者上添加插件
curl -X POST http://kong:8001/consumers/{consumer}/plugins --data "name=rate-limiting" --data "config.second=5" --data "config.hour=10000"
  • 返回给客户端的头部信息
X-RateLimit-Limit-Second: 5
X-RateLimit-Remaining-Second: 4
X-RateLimit-Limit-Minute: 10
X-RateLimit-Remaining-Minute: 9
  • 实施细节
模式优点描述
cluster准确,不需要依赖其他组件相对来说性能影响最大的,每个请求都会强制对底层的数据源进行读写操作
redis准确,性能影响比cluster模式小需要额外安装redis,相比local模式性能影响大
local性能影响最小不太准确,除非在Kong之前使用Hash一致性负载均衡器
  1. 事务粒度
    这个场景中,不能选用 local 策略,应该在 clusterredis 策略中考量,推荐是先尝试使用 cluster 策略,如果性能急速下降,则切换成 redis 策略,需要注意的是,指标数据无法从原有数据源切换到redis,通常来说,短周期指标(如秒、分)不受影响,长周期指标(月)可能会有影响,所以切换数据源时需要小心
  2. 后端保护模式
    这种场景中因为准确性不太重要,可以使用 local 策略,这需要多些尝试才能找到合适的值,比如用户希望配置限流每秒100个请求,总共有5个Kong节点,设置 local 策略,每秒30个请求,大致可以满足需求,如果觉得返回的失败过于频繁,可以适当增大阈值
    需要注意的是,当增加Kong节点时,会增加总请求数;同理减少Kong节点时,会降低总请求数,所以调整节点数时需要同步调整阈值
    在Kong节点前使用Hash一致性负载均衡器可以避免上述的问题,因为它会保证相同的用户会路由到指定的Kong节点,保证数据准确,并且不受节点缩放的影响
    通常情况下,真实的请求数会大于限流的阈值,但是它还是能有效的防止攻击,并且保持最佳性能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

举个栗子の不容易

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值