限流功能设计

很早以前做过一个限流的功能,设计地很ugly。今天看到Log4j2的限流过滤器设计的非常好,花了一些时间研究感觉很不错,以后可能还会再用,总结一下吧。

首先我们要先聊一下限流功能主要是做什么?其实就是限制某种操作在某段时间内,限制做多少次。

Log4j2的使用了一个 DelayQueue 和一个 ConcurrentLinkedQueue 开发了一个过滤器(burstFilter)比较优雅解决了这个问题。

整体架构如下:



 

设计核心逻辑如下:



 

burstFilter初始化辑如下:


 
 

猜你喜欢

转载自murray2081.iteye.com/blog/2404794