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_host | redis服务器地址 |
config.redis_port | redis服务器端口 |
config.redis_password | redis服务器密码 |
config.redis_timeout | 连接redis服务器超时时间 |
config.redis_database | redis数据库 |
使用详情
- 在服务上添加插件
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一致性负载均衡器 |
- 事务粒度
这个场景中,不能选用local
策略,应该在cluster
或redis
策略中考量,推荐是先尝试使用cluster
策略,如果性能急速下降,则切换成redis
策略,需要注意的是,指标数据无法从原有数据源切换到redis,通常来说,短周期指标(如秒、分)不受影响,长周期指标(月)可能会有影响,所以切换数据源时需要小心 - 后端保护模式
这种场景中因为准确性不太重要,可以使用local
策略,这需要多些尝试才能找到合适的值,比如用户希望配置限流每秒100个请求,总共有5个Kong节点,设置local
策略,每秒30个请求,大致可以满足需求,如果觉得返回的失败过于频繁,可以适当增大阈值
需要注意的是,当增加Kong节点时,会增加总请求数;同理减少Kong节点时,会降低总请求数,所以调整节点数时需要同步调整阈值
在Kong节点前使用Hash一致性负载均衡器可以避免上述的问题,因为它会保证相同的用户会路由到指定的Kong节点,保证数据准确,并且不受节点缩放的影响
通常情况下,真实的请求数会大于限流的阈值,但是它还是能有效的防止攻击,并且保持最佳性能
Kong Rate Limiting 插件详解相关推荐
- Kong Basic Authentication 插件详解
配置信息 基本描述 属性 描述 认证方式 基本认证.用户名密码登录 插件作用域 服务.路由.全局 适用协议 http.https 基本属性 属性 描述 name 插件名称.此处为basic-auth ...
- Logstash(二)input、codec插件详解
input input 插件指定数据输入源,一个pipeline可以有多个input插件,我们主要讲解下面的几个input插件: - stdin- file- kafka Input Plugin – ...
- 我的世界服务器物品绑定插件,我的世界灵魂绑定插件详解
我的世界灵魂绑定插件详解.那下面给大家分享的是关于灵魂插件的用途详细介绍,还有关于我的世界服务器防止熊孩子盗窃插件用途介绍哦~希望对大家有所帮助. 游戏园我的世界官方群:325049520(已满)二群 ...
- Snort日志输出插件详解
Snort日志输出插件详解 Snort是一款老×××的开源***检测工具,本文主要讨论他作为日志分析时的各种插件的应用.Snort的日志一般位于:/var/log/snort/目录下.可以通过修改配置 ...
- maven常用插件详解
1. 简介 我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven- compiler-plugin完成的.进一步说, ...
- Rollup常用插件详解
文章目录 系列文章 @rollup/plugin-node-resolve Options extensions @rollup/plugin-commonjs @rollup/plugin-babe ...
- fullcalendar php,php使用fullcalendar日历插件详解,fullcalendar日历
php使用fullcalendar日历插件详解,fullcalendar日历 最近做课程表的项目,找了好多个插件感觉都不好用,无意间看到了fullcalendar,还挺简单的,很方便,先贴一张项目页面 ...
- snort 日志 mysql_Snort日志输出插件详解
Snort日志输出插件详解 Snort是一款老×××的开源***检测工具,本文主要讨论他作为日志分析时的各种插件的应用.Snort的日志一般位于:/var/log/snort/目录下.可以通过修改配置 ...
- JQuery自定义插件详解之Banner图滚动插件
前 言 JRedu JQuery是什么相信已经不需要详细介绍了.作为时下最火的JS库之一,JQuery将其"Write Less,Do More!"的口号发挥的极致.而帮助J ...
最新文章
- ASP.NET Core 2 学习笔记(四)依赖注入
- Caffe官方教程翻译(6):Learning LeNet
- 单机和分布式场景下,有哪些流控方案?
- Android背景色渐变效果(shape,gradient) (转)
- 【qduoj】C语言课程设计_约瑟夫问题
- PWM调光方法在LED亮度调节中的应用
- only 程序员的一个小总结
- 原创|面试官:线上服务器CPU占用率高如何排查定位问题?
- 双精度浮点数转换_模型压缩一半,精度几乎无损,TensorFlow推出半精度浮点量化工具包,还有在线Demo...
- 9. JEB 1.5插件编写一
- ORM框架,sqlsugar学习一
- 博客堂服务器转移成功!
- MySQL/InnoDB的并发插入Concurrent Insert
- 统计学习导论(ISLR)第五章bootstrap和交叉验证课后习题
- vbm 分析_VBM
- 将公式直接转化为Latex代码的神器-snip
- 小伙长期熬夜加班致“斑秃” IT业人士最易脱发
- Fedora14 基于Qt的UDP传输文字聊天小软件实现 (Qt查询本地Ip、Qt本地时间显示、传输中文汉字实现、Qt的textedit自动滚屏实现、给QPushButton设键盘快捷实现)---续上
- 计算机应用基础7次作业答案,北京中医药大学远程教育“计算机应用基础”第7次作业(14页)-原创力文档...
- win10计算机显示摄像头,win10系统此电脑添加摄像头(视频设备)图标的操作方法
热门文章
- 解决Virtualbox安装系统界面显示不全问题
- Redis缓存详解(黑马-未完结)
- less-用法:简介、变量、混合、嵌套、运算、转义、函数、映射、作用域、注释、导入、继承、条件判断
- 「需求分析」用户故事和用例是一回事吗?
- 用VS软件开发“中国象棋“游戏
- 安卓手机电脑投屏软件【apowermirror、虫洞投屏软件】
- python 实现 i18n 多语言国际化
- 意识的哲学、生理及智能属性研究
- typedef int()(int,int)
- java 实现异地登陆_Java实现用户异地登陆踢人操作