四种分布式限流算法实现!( 五 )

Redisson实现的 , 还是比较稳的 , 这里就不测试了 。
关于Redission是怎么实现这个限速器的 , 大家可以看一下参考[3] , 还是Redisson家的老传统——Lua脚本 , 设计相当巧妙 。
总结在这篇文章里 , 我们对四(三)种限流算法进行了分布式实现 , 采用了非常好用的Redission客户端 , 当然我们也有不完善的地方:

  • 并发处理采用了分布式锁 , 高并发情况下 , 对性能有一定损耗 , 逻辑最好还是直接采用Lua脚本实现 , 来提高性能
  • 可以提供更加优雅的调用方式 , 比如利用aop实现注解式调用 , 代码设计也可以更加优雅 , 继承体系可以完善一下
  • 没有实现限流的拒绝策略 , 比如抛异常、缓存、丢进MQ打散……限流是一种方法 , 最终的目的还是尽可能保证系统平稳
如果后面有机会 , 希望可以继续完善这个简单的Demo , 达到工程级的应用 。
除此之外 , 市面上也有很多好用的开源限流工具:
  • Guava RateLimiter  , 基于令牌桶算法限流 , 当然是单机的;
  • Sentinel  , 基于滑动窗口限流 , 支持单机 , 也支持集群
  • 网关限流 , 很多网关自带限流方法 , 比如Spring Cloud Gateway、Nginx
……
好了 , 这期文章就到这里了 , 我们下期见 。
参考:[1]. 面试官:来 , 年轻人!请手撸5种常见限流算法!
[2].https://zhuanlan.zhihu.com/p/479956069
[3].https://Github.com/oneone1995/blog/issues/13

【四种分布式限流算法实现!】


推荐阅读