kafka时间轮-轮询方式
时间轮
kafka中存在大量的延时操作,比如延时生产,延时消费,延时删除等。kafka并没有使用JDK自带的Timer和DelayQuene来实现延时的功能,而是基于时间轮的概念自定义实现了一个用于延时操作的定时器(SystemTimer)。
复杂度
jdk的Timer和DelayQuene的插入和删除的复杂度为O(nlogn)
根据源码分析,Timer底层使用的TaskQueue,内部实现使用的是最小堆
kafka使用的时间轮接近于O(1),不仅仅是kafka采用了时间轮,在 Netty,Akka,
原创
2020-06-12 19:10:49 ·
2711 阅读 ·
0 评论