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

yudeguang · · 5230 次点击
如果要封装成http服务, 那么这个http服务会变成单点, 在高并发下这个关键路径会成为系统瓶颈. 其次, 性能会比业务直接连 redis 性能上要差, 因为 `退化`成了 http调用, 一次http调用明显比一次 redis call 要差. 再其次, 虽然标榜不需要redis, 但是还是要平白无故多搞一个独立的 http 服务 再者, 都是把单机的算法进行封装, 为什么不用golang自带的ratelimit呢, 连第三方包都不用引用, 文档齐全查资料多经受住了国内外项目的考验. 而且你这个包中 `把历史数据备份到本地磁盘` 的功能其实 nobody care. 实在需要看这个东西直接存日志就行了 感觉 LZ 实际的经验还是不太足够啊.....
#6
更多评论
你可能还不清楚为什么要用redis,因为要涉及多台物理机,哪个语言做不到进程内存访问数百万qps?
#1
………… 你不用redis我能理解。 但是,这种功能肯定是一个网关啊…… 不带http的反向代理测出来的数据毫无意义。 带了http的话,会发现走内存没啥意义。 而且这种功能肯定是实现一个接口,然后写一个内存驱动一个redis驱动……
#2