时间轮 Kafka的时间轮是一个存储定时任务的环形队列,底层采用数组实现。数组中的每个元素都能存放一个定时任务列表,其数据结构是一个环形双向链表。链表的每个节点都表示一个定时任务项时间轮由多个时间格组成,每个时间格代表当前时间轮的基本时间跨度。还有一个表盘指针,指向的时间格为目前到期,需要处理的定时任务时间轮可能有多个层级,第一层的总时间长度即第二层的基本时间跨度。当定时任务所剩的时间足以被放入更低一层时间轮时,会被降级到低一层时间轮。只有最低层时间轮的任务会被执行时间轮的插入/删除时间复杂度均为1