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一致性负载均衡器
  1. 事务粒度
    这个场景中,不能选用 local 策略,应该在 clusterredis 策略中考量,推荐是先尝试使用 cluster 策略,如果性能急速下降,则切换成 redis 策略,需要注意的是,指标数据无法从原有数据源切换到redis,通常来说,短周期指标(如秒、分)不受影响,长周期指标(月)可能会有影响,所以切换数据源时需要小心
  2. 后端保护模式
    这种场景中因为准确性不太重要,可以使用 local 策略,这需要多些尝试才能找到合适的值,比如用户希望配置限流每秒100个请求,总共有5个Kong节点,设置 local 策略,每秒30个请求,大致可以满足需求,如果觉得返回的失败过于频繁,可以适当增大阈值
    需要注意的是,当增加Kong节点时,会增加总请求数;同理减少Kong节点时,会降低总请求数,所以调整节点数时需要同步调整阈值
    在Kong节点前使用Hash一致性负载均衡器可以避免上述的问题,因为它会保证相同的用户会路由到指定的Kong节点,保证数据准确,并且不受节点缩放的影响
    通常情况下,真实的请求数会大于限流的阈值,但是它还是能有效的防止攻击,并且保持最佳性能

Kong Rate Limiting 插件详解相关推荐

  1. Kong Basic Authentication 插件详解

    配置信息 基本描述 属性 描述 认证方式 基本认证.用户名密码登录 插件作用域 服务.路由.全局 适用协议 http.https 基本属性 属性 描述 name 插件名称.此处为basic-auth ...

  2. Logstash(二)input、codec插件详解

    input input 插件指定数据输入源,一个pipeline可以有多个input插件,我们主要讲解下面的几个input插件: - stdin- file- kafka Input Plugin – ...

  3. 我的世界服务器物品绑定插件,我的世界灵魂绑定插件详解

    我的世界灵魂绑定插件详解.那下面给大家分享的是关于灵魂插件的用途详细介绍,还有关于我的世界服务器防止熊孩子盗窃插件用途介绍哦~希望对大家有所帮助. 游戏园我的世界官方群:325049520(已满)二群 ...

  4. Snort日志输出插件详解

    Snort日志输出插件详解 Snort是一款老×××的开源***检测工具,本文主要讨论他作为日志分析时的各种插件的应用.Snort的日志一般位于:/var/log/snort/目录下.可以通过修改配置 ...

  5. maven常用插件详解

    1. 简介 我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven- compiler-plugin完成的.进一步说, ...

  6. Rollup常用插件详解

    文章目录 系列文章 @rollup/plugin-node-resolve Options extensions @rollup/plugin-commonjs @rollup/plugin-babe ...

  7. fullcalendar php,php使用fullcalendar日历插件详解,fullcalendar日历

    php使用fullcalendar日历插件详解,fullcalendar日历 最近做课程表的项目,找了好多个插件感觉都不好用,无意间看到了fullcalendar,还挺简单的,很方便,先贴一张项目页面 ...

  8. snort 日志 mysql_Snort日志输出插件详解

    Snort日志输出插件详解 Snort是一款老×××的开源***检测工具,本文主要讨论他作为日志分析时的各种插件的应用.Snort的日志一般位于:/var/log/snort/目录下.可以通过修改配置 ...

  9. JQuery自定义插件详解之Banner图滚动插件

      前  言 JRedu JQuery是什么相信已经不需要详细介绍了.作为时下最火的JS库之一,JQuery将其"Write Less,Do More!"的口号发挥的极致.而帮助J ...

最新文章

  1. ASP.NET Core 2 学习笔记(四)依赖注入
  2. Caffe官方教程翻译(6):Learning LeNet
  3. 单机和分布式场景下,有哪些流控方案?
  4. Android背景色渐变效果(shape,gradient) (转)
  5. 【qduoj】C语言课程设计_约瑟夫问题
  6. PWM调光方法在LED亮度调节中的应用
  7. only 程序员的一个小总结
  8. 原创|面试官:线上服务器CPU占用率高如何排查定位问题?
  9. 双精度浮点数转换_模型压缩一半,精度几乎无损,TensorFlow推出半精度浮点量化工具包,还有在线Demo...
  10. 9. JEB 1.5插件编写一
  11. ORM框架,sqlsugar学习一
  12. 博客堂服务器转移成功!
  13. MySQL/InnoDB的并发插入Concurrent Insert
  14. 统计学习导论(ISLR)第五章bootstrap和交叉验证课后习题
  15. vbm 分析_VBM
  16. 将公式直接转化为Latex代码的神器-snip
  17. 小伙长期熬夜加班致“斑秃” IT业人士最易脱发
  18. Fedora14 基于Qt的UDP传输文字聊天小软件实现 (Qt查询本地Ip、Qt本地时间显示、传输中文汉字实现、Qt的textedit自动滚屏实现、给QPushButton设键盘快捷实现)---续上
  19. 计算机应用基础7次作业答案,北京中医药大学远程教育“计算机应用基础”第7次作业(14页)-原创力文档...
  20. win10计算机显示摄像头,win10系统此电脑添加摄像头(视频设备)图标的操作方法

热门文章

  1. 解决Virtualbox安装系统界面显示不全问题
  2. Redis缓存详解(黑马-未完结)
  3. less-用法:简介、变量、混合、嵌套、运算、转义、函数、映射、作用域、注释、导入、继承、条件判断
  4. 「需求分析」用户故事和用例是一回事吗?
  5. 用VS软件开发“中国象棋“游戏
  6. 安卓手机电脑投屏软件【apowermirror、虫洞投屏软件】
  7. python 实现 i18n 多语言国际化
  8. 意识的哲学、生理及智能属性研究
  9. typedef int()(int,int)
  10. java 实现异地登陆_Java实现用户异地登陆踢人操作