Kong的流量控制组件测试和应用(一)

今天我们来测试kong的流量控制组件,可以从kong目前开源的已发布的流量插件来看包含以下四个插件,我们一个个来解析:

在这里插入图片描述

1) Rate Limiting,速率限制插件,速率限制主要用来控制接收的HTTP请求数量。
速率限制插件是消费端在给定的秒、分钟、小时、天、月或年时间内可以发出多少次HTTP请求。如果API没有身份验证层,将使用客户机IP地址进行区分。否则,如果配置了身份验证插件,则将使用消费方。我们来看插件配置:
 限制对象:包括消费方、凭证和IP地址,如果调用服务的客户端能对应到消费方则使用消费方或者凭证来累计调用次数,如果无法对应到消费方或凭证,则平台将回退到使用IP进行调用次数累加.
 策略:包括本地、集群和Redis选项。用于检索和增加限制的速率限制策略。可用值包括local(计数器将存储在节点的本地内存中)、cluster(计数器存储在数据共享存储中并在节点间共享)和Redis(计数器存储在Redis服务器上并在节点间共享)。
这个可以这么理解,如果设置了每分钟50次,选项为Local,则调用到本地
路由服务50次以上之后,才会进行限制。如果存在集群负载均衡的场景,虽然消费方调用了100次,但有可能51次都是负载到其他服务器,则也不会触发该限流。同理,集权的概念也类似,集群是共享的计数器,如果设置的100,则集群中所有机器的该服务调用在设定的时间内超过100次则触发限流。Redis则是将计数器存储在Redis缓存中,可提升读取和判断的速度。
 容错功能:可选为是或者否,该功能用于确定在连接第三方数据存储时是否应代理请求(即使网关遇到问题)。如果为是则请求将以任何方式被代理,在数据存储再次工作之前,有效地禁用速率限制功能。如果为否,则客户端将看到500个错误。这个看似挺难理解,其实实际上是在表达如果该选项为是,则当Redis出现连接问题,该服务依然能正常访问正常返回,不受速率控制插件限制。如果选择否,则Redis出现问题后,服务就会返回500错误。这里我们一般都会选是,不会让Redis的正常与否影响了服务的正常访问。
 消费方配置:服务启用了身份认证,则可配置限流针对的消费方。如服务未配置身份认证,则根据IP限流。为空则针对所有消费方。
 限流周期和次数:限流周期支持秒、分、小时、天、月、年。可设置对应的限流消费数,触发规则为只要一个周期内超过计数器设置,则触发限流。
接下来我们来测试下该插件:
 比如我设置某个服务的限流周期为每分钟2次:
在这里插入图片描述

 使用POSTMAN进行服务调用第三次后,出现:
在这里插入图片描述

 后再使用POSTMAN调用,接下来再调用三次,分别出现正常、正常、限流。
因此可以断定kong的该插件也是针对单个分钟区间而不是连续时间的计数。实际上没有哪个网关能够做到连续时间计数的限流控制,那样损耗的性能非常之大,业界的做法也都是针对单个时间区间。比如1:00-2:00的小时时间区间,而不是1:00-2:00/1:01-2:01 /1:02-2:02这样的连续小时区间。
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值