基于Redis和Lua的分布式限流

  1. 云栖社区>
  2. Redis&MongoDB社区>
  3. 博客>
  4. 正文

基于Redis和Lua的分布式限流

carpediem123 2019-04-07 22:59:19 浏览1549
展开阅读全文

 Java单机限流可以使用AtomicInteger,RateLimiter或Semaphore来实现,但是上述方案都不支持集群限流。集群限流的应用场景有两个,一个是网关,常用的方案有Nginx限流和Spring Cloud Gateway,另一个场景是与外部或者下游服务接口的交互,因为接口限制必须进行限流。

 本文的主要内容为:

  • Redis和Lua的使用场景和注意事项,比如说KEY映射的问题。
  • Spring Cloud Gateway中限流的实现。

集群限流的难点

 在上篇Guava RateLimiter的分析文章中,我们学习了令牌桶限流算法的原理,下面我们就探讨一下,如果将RateLimiter扩展,让它支持集群限流,会遇到哪些问题。

RateLimiter会维护两个关键的参数nextFreeTicketMicrosstoredPe

网友评论

登录后评论
0/500
评论
carpediem123
+ 关注
所属云栖号: Redis&MongoDB社区