纯 golang 实现精确实现滑动窗口限流,支持本地持久化,性能远超用 redis 实现的方案 (约 250 万/s)

yudeguang · 2021-04-12 16:27:18 · 5520 次点击

如果要封装成http服务, 那么这个http服务会变成单点, 在高并发下这个关键路径会成为系统瓶颈.

其次, 性能会比业务直接连 redis 性能上要差, 因为 退化成了 http调用, 一次http调用明显比一次 redis call 要差.

再其次, 虽然标榜不需要redis, 但是还是要平白无故多搞一个独立的 http 服务

再者, 都是把单机的算法进行封装, 为什么不用golang自带的ratelimit呢, 连第三方包都不用引用, 文档齐全查资料多经受住了国内外项目的考验. 而且你这个包中 把历史数据备份到本地磁盘 的功能其实 nobody care. 实在需要看这个东西直接存日志就行了

感觉 LZ 实际的经验还是不太足够啊.....

#6
更多评论

你可能还不清楚为什么要用redis,因为要涉及多台物理机,哪个语言做不到进程内存访问数百万qps?

#1

…………

你不用redis我能理解。

但是,这种功能肯定是一个网关啊……

不带http的反向代理测出来的数据毫无意义。

带了http的话,会发现走内存没啥意义。

而且这种功能肯定是实现一个接口,然后写一个内存驱动一个redis驱动……

#2