Kong 速率限制

速率限制用于控制发送到上游服务的请求速率。它可以用于防止拒绝服务(DoS)攻击、限制网络爬虫以及其他形式的滥用行为。没有速率限制,客户端可以无限制地访问您的上游服务,可能会对可用性产生负面影响。

速率限制插件

Kong Gateway通过使用速率限制插件对客户端进行速率限制。当启用速率限制时,客户端在可配置的时间段内受到请求次数的限制。该插件支持将客户端标识为消费者或根据请求的客户端IP地址进行标识。

本教程使用速率限制插件。还有一个名为速率限制高级插件可供选择。高级版本提供了更多功能,如支持滑动窗口算法和高级Redis支持,以实现更高的性能。

管理速率限制

以下教程将介绍如何在Kong Gateway中管理各个方面的速率限制。

先决条件 

本章是“开始使用Kong”的系列教程的一部分。为了获得最佳体验,建议您从头开始按照该系列教程进行学习。

首先,请阅读介绍“了解Kong”,其中包括工具先决条件和在本地运行Kong Gateway的说明。

在指南的第二步中,“服务和路由”,包括安装一个贯穿整个系列教程的模拟服务的说明。

如果您还未完成这些步骤,请先完成它们,然后再继续进行。

全局速率限制

在全局范围安装插件意味着每个代理请求到Kong Gateway都将受到速率限制的强制执行。

1. 启用速率限制 

默认情况下,Kong Gateway上安装了速率限制插件,并且可以通过向Admin API的plugins对象发送POST请求来启用它:

curl -i -X POST http://localhost:8001/plugins \--data name=rate-limiting \--data config.minute=5 \--data config.policy=local

该命令指示Kong Gateway对所有路由和服务的每个客户端IP地址每分钟限制最多5个请求。

策略配置决定了Kong Gateway从哪获取限制并递增。详细信息请参阅完整的插件配置参考。

您将看到一个包含新插件配置的响应,其中包括类似于标识信息的内容:

...
"id": "fc559a2d-ac80-4be8-8e43-cb705524be7f",
"name": "rate-limiting",
"enabled": true
...

 2. 验证

在配置了速率限制之后,您可以通过发送超过配置时间限制的请求来验证其是否正确配置并起作用。

命令行:

运行以下命令以快速发送6个模拟请求:

for _ in {1..6}; do curl -s -i localhost:8000/mock/anything; echo; sleep 1; done

 在第6个请求之后,您应该会收到一个429“API速率限制超过限制”的错误。

{"message": "API rate limit exceeded"
}

 Web浏览器:

在浏览器中打开http://localhost:8000/mock/anything,并在1分钟内刷新页面6次。

在第6个请求之后,您应该会收到一个429“API速率限制超过限制”的错误。

{"message": "API rate limit exceeded"
}
服务级速率限制

可以为特定服务启用速率限制插件。请求与上述相同,但应该将请求发送到服务的URL。

curl -X POST http://localhost:8001/services/example_service/plugins \--data "name=rate-limiting" \--data config.minute=5 \--data config.policy=local
 路由级速率限制

可以为特定路由启用速率限制插件。请求与上述相同,但应该将请求发送到路由的URL。

curl -X POST http://localhost:8001/routes/example_route/plugins \--data "name=rate-limiting" \--data config.minute=5 \--data config.policy=local
 消费者级速率限制

在Kong Gateway中,消费者是定义服务的用户的抽象概念。消费者级速率限制可以用于按消费者限制请求速率。

1. 创建一个消费者 

使用Admin API中的consumer对象可以创建消费者。

curl -X POST http://localhost:8001/consumers/ \--data username=jsmith

 2. 为消费者启用速率限制

使用消费者ID,为名为jsmith的消费者的所有路由和服务启用速率限制。

curl -X POST http://localhost:8001/plugins \--data "name=rate-limiting" \--data "consumer.username=jsmith" \--data "config.second=5"

 高级速率限制

在高规模生产场景中,有效的速率限制可能需要采用高级技术。上述基本速率限制插件只允许您在固定时间窗口内定义限制。对于许多情况来说,固定时间窗口已经足够,但也存在一些缺点:

  • 围绕固定窗口的边界时间突发请求可能会导致资源紧张,因为窗口计数器会在流量突发期间重置。
  • 多个客户端应用程序可能正在等待固定时间窗口重置以便恢复发送请求。当固定窗口重置时,多个客户端可能会向系统发送大量请求,对上游服务造成踩踏效应。

高级速率限制插件(企业版)是基本速率限制插件的增强版。该高级插件提供了额外的限流算法功能,并且与基本插件相比具有更高的性能。 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/663517.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux - iptables 防火墙

一. 安全技术和防火墙 1.安全技术 入侵检测系统(Intrusion Detection Systems):特点是不阻断任何网络访问,量化、定位来自内外网络的威胁情况,主要以提供报警和事后监督为主,提供有针对性的指导措施和安全…

专业数据治理:数据中台系统塑造企业未来的数字化运营管理新秩序

随着信息化进程的快速推进,数据已然成为企业最为宝贵的资产。对于众多企业而言,如何有效整合、治理以及充分利用这些数据,使之成为推动业务发展的引擎,成为当前难题。数据中台应运而生,它被认为是企业数字化转型的至关…

元素的显示与隐藏,精灵图,字体图标,CSSC三角

元素的显示与隐藏 类似网站广告,当我们点击关闭就不见了,但是我们重新刷新页面,会重新出现 本质:让元素在页面中隐藏或者显示出来。 1.display显示隐藏 2.visibility显示隐藏 3.overflow溢出显示隐藏 1.display属性(…

远EC600E-CN LTE Standard模块硬件设计手册

EC600E-CN是一款LTE-FDD、LTE-TDD无线通信模块,支持LTE-FDD和LTE-TDD数据连接,可为客户在特定场景应用中提供语音功能。 模块封装紧凑,仅为22.9mm21.9mm2.4mm,能满足大部分M2M应用需求,例如自动化领域、智能计量、跟踪…

IP网络对讲系统高清可视寻呼话筒管理中心主机10寸大屏有线呼叫器监狱看守所监狱收费站可视对讲系统

SV-2017P网络可视话筒产品简介 产品特点 专业寻呼主机外形,桌面式设计,采用10.1寸高清IPS屏幕,分辨率1280*720,全虚拟按键加实体按键,外形美观大方;采用工业级4核嵌入式CPU芯片1G内存,保证系统…

计算机网络(第六版)复习提纲24

3 传输控制协议TCP概述 A TCP最主要的特点 1 面向连接的传输层协议 2 每一条TCP连接只能有两个端点,且只能是点对点的 3 提供可靠交付的服务(无差错、不丢失、不重复、不乱序) 4 全双工通信,两端设有发送缓存和接收缓存 5 面向字节…

arcgis自定义dem高程实现地形抬高 - 操作矢量,转tin、adf(tif),cesiumlab切高程服务

这次记录分享一下arcgis自定义高程全过程 /(ㄒoㄒ)/~~ 我的场景:前端实现地面抬高效果 自定义高程实现地形抬高 一、数据处理 - arcgis操作矢量1、准备工作(可选)2、绘制外围矢量(可选)3、操作矢量数据 二、创建tin - …

HTTP请求传递参数方式【2024-02-01】

1、HTTP请求传递参数分类 1.1、按照请求方式分类 GET方法:通过查询字符串(Query String,每个参数由参数名和参数值组成,使用等号 连接,不同参数之间使用 & 符号分隔)的方式或直接将参数放在URL中来传递参数POST…

VUE PC端可拖动悬浮按钮

一、实现效果&#xff1a; 二、FloatButton.vue <template><div><div class"sssss"><div class"callback float" mousedown"down" touchstart"down" mousemove"move" touchmove"move" mous…

C语言——柔性数组

柔性数组概念&#xff1a; 这个概念你可能没听说过&#xff0c;但是这个概念确实存在&#xff0c;在C99中&#xff0c;结构体中最后一个成员允许是未知大小的数组&#xff0c;这就叫做【柔性数组】成员。 struct S {char c;int i;int arr[0];//未知大小的数组 - 柔性数组成员 }…

深度学习入门笔记(三)常用AI术语

本节我们介绍一些深度学习领域常用的术语。 训练 确定模型中的参数的过程,我们就称为“训练”。 Epoch 遍历一遍训练数据就叫作“一个 Epoch”。训练模型的时候,我们要告诉模型预计训练多少个 Epoch,但这个值并不是固定的,因为并没有一个准确的 Epoch 数能一定能得到一…

Java项目:基于SSM框架实现的西安旅游管理系统(ssm+B/S架构+源码+数据库+毕业论文)

一、项目简介 本项目是一套ssm811基于SSM框架实现的西安旅游管理系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&am…

假如装修内行人给自己孩子装修,会有多用心?

假如装修师父给自己孩子装修&#xff0c;会怎么装呢&#xff1f;      雅静说买环保的材料&#xff0c;给你省几万块钱      给大家内行人装修&#xff0c;把环保&#xff0c;实用&#xff0c;省钱&#xff0c;都能拥有的方法      1&#xff0c;我不会换开发商给她…

Portainer访问远程Docker (TLS加密)

前言&#xff1a; docker的2375端口&#xff0c;出于安全性考虑即(Docker Remote API未授权访问漏洞)&#xff0c;是不开放的&#xff0c;如果想要管理远程docker&#xff0c;可以使用TLS机制来进行访问&#xff0c;这里以Portainer访问连接为例 文章参考&#xff1a;https://b…

【2023地理设计组一等奖】基于多元数据的新能源汽车充电站动态规划——以番禺区为例

作品介绍 1 设计思想 1.1 作品背景 据中国汽车工业协会统计,截至 2020 年底,我国新能源汽车保有量达到 480 万辆,占全球新能源汽车保有量的42%。然而,与之相对应的是,我国新能源汽车充电桩建设仍然滞后于需求,截至 2020 年底,我国公共充电桩数量仅为 79.4 万个,远低于…

单机搭建hadoop环境(包括hdfs、yarn、hive)

单机可以搭建伪分布式hadoop环境&#xff0c;用来测试和开发使用&#xff0c;hadoop包括&#xff1a; hdfs服务器 yarn服务器&#xff0c;yarn的前提是hdfs服务器&#xff0c; 在前面两个的基础上&#xff0c;课可以搭建hive服务器&#xff0c;不过hive不属于hadoop的必须部…

MacBook安装软件时允许任何来源的软件

MacBook安装软件时允许任何来源的软件 临时设置允许未知来源的app 当下载网上的软件并安装时,会安装失败, 因为MacOS默认只允许安装App Store上的软件 这时可以临时允许安装,如下设置 开启设置—->安全性与隐私—->未知来源的app 这种方式比较安全 设置允许任何来源…

计算机毕业设计 | SpringBoot 房屋租赁网 房屋租赁平台(附源码)

1&#xff0c;绪论 1.1 背景调研 在房地产行业持续火热的当今环境下&#xff0c;房地产行业和互联网行业协同发展&#xff0c;互相促进融合已经成为一种趋势和潮流。本项目实现了在线房产平台的功能&#xff0c;多种技术的灵活运用使得项目具备很好的用户体验感。 这个项目的…

2024年美国大学生数学建模比赛MCM问题A:资源可用性和性别比例-思路解析与代码解答

2024 MCM Problem A: Resource Availability and Sex Ratios 一、题目翻译 背景 虽然一些动物物种存在于通常的雄性或雌性性别之外&#xff0c;但大多数物种实质上是雄性或雌性。虽然许多物种在出生时的性别比例为1&#xff1a;1&#xff0c;但其他物种的性别比例并不均匀。…

【A题完整论文】2024美赛完整论文+代码参考(无偿分享)

A题&#xff1a;资源可用性和性别比例 一、问题分析 1.1 问题一分析 针对该问题&#xff0c;若七鳃鮼的性别比例受到外部环境因素的影响&#xff0c;那么这可能会导致种群大小和结构的变化。如果雌性在某些环境条件下更为优势&#xff0c;种群的增加可能对其他物种的竞争和资源…