请教下 Kong 网关限流的解决方案

2022-06-17 10:29:53 +08:00
 mypchas6fans

传统企业的电商 app 和网站,我理解流量说大不大说小不小 现有方案是老板做的,用了 istio 的 EnvoyFilter ,local 模式,我没实测过,他说效果还行

现在上了 Kong 网关,想把限流提前到这一层来做,问题就来了……

  1. 开源版本的 rate-limiting 插件使用固定窗口算法,无论 local 还是 redis 方式,流量很小的时候还比较准,流量稍大就被冲破了限制不住,跟过家家似的;
  2. 有可能搞到企业版,说是提供滑动窗口算法,但第一流程折腾,第二效果怎么样不清楚,第三光为限流整这个还有点浪费……
  3. 第三方插件,github 上 lua golang 试了个遍,目前看来效果比开源版本略好,但流量大了还是不行
  4. 自己也试着用 golang 的 x/time/rate 包装了一个插件,然而本人 golang 菜鸡,连 429 都没返回,还在查

想知道这个方向有没有人了解,有啥建议吗?需要细节可以帖子里或单独详聊。 感谢

2693 次点击
所在节点    程序员
17 条回复
victorc
2022-06-17 10:33:23 +08:00
linux 自带 按域名单机限流,凑合能用

“流量稍大就被冲破了限制不住”-- 这个存疑,就是直接用 golang 里面的 rate 包写的限流器也能限制住,不能 100%精确限制,但是不存在冲破限制不住,你自己看看配置吧
retanoj
2022-06-17 10:36:15 +08:00
@victorc “linux 自带按域名限流”

请问这个具体是什么工具 /功能可以做到?
mypchas6fans
2022-06-17 10:41:03 +08:00
@victorc 我可能说得不准,所谓限制不住,比如每秒 1w 请求,我期望限制到 100 ,结果 5000 个都成功过去了。虽说没全部过去,但这跟没限好像也没啥区别……
mypchas6fans
2022-06-17 10:44:19 +08:00
kong 开源版本的问题描述,我看了相关代码还在
https://qmsheng.github.io/2018/04/04/kong-rate-limiting/
Duluku
2022-06-17 10:46:50 +08:00
换 apisix 试试?
yukang
2022-06-17 10:47:06 +08:00
以前使用过,其实也就是 Nginx ?

https://catcoding.me/p/nginx-traffic-limit/

我怀疑你说的不准是不是哪里没理解,前公司也用 kong ,看起来是没问题?
我记得有个问题是,如果你的 kong 有多个实例,要重新计算的。
Wien
2022-06-17 10:48:33 +08:00
之前做过一些业务限流如令牌桶,漏桶算法,无非是使用原子计数器,简单也好用。Kong 网关连这种基础的限流都不支持吗,这个我存疑,建议你再试试。
victorc
2022-06-17 10:52:57 +08:00
@retanoj 笔误,nginx
victorc
2022-06-17 10:54:29 +08:00
@mypchas6fans 一定是你配置有问题,限流器 设置限流 1000 ,最终放过了 1100 ,是正常的,但是你说 100 放 5000 ,哪完全不对的
mypchas6fans
2022-06-17 11:29:57 +08:00
感谢楼上各位,我可以再试试,不过我理解 kong 没有使用 nginx 自带的限流,而是自己实现了一个算法,然后才会有我在 4 楼说的问题
c0nstantien
2022-06-17 14:33:35 +08:00
试试 apisix 的 limit-req 插件
retanoj
2022-06-17 14:38:59 +08:00
yghack
2022-06-17 14:45:56 +08:00
APISIX +1
zwpaper
2022-06-17 15:23:26 +08:00
帮你 @9yu ,一直在 v 站置顶招聘
mypchas6fans
2022-06-17 17:40:50 +08:00
9yu
2022-06-17 18:44:55 +08:00
@mypchas6fans
> 比如每秒 1w 请求,我期望限制到 100 ,结果 5000 个都成功过去了

目前有一个优化 Redis 限流器的、等待 Review 的 PR https://github.com/Kong/kong/pull/8751

如果你能在此帖或 Kong 的 Github 上贴上复现步骤,我非常愿意来跟进和在开源版本中修复这个问题 ( ^ω^ )
mypchas6fans
2022-06-20 08:59:37 +08:00
@9yu 感谢,我会继续尝试然后和你联系

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/860219

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX