前言
协议设计、时间轮、延迟操作、控制器、参数解密
协议设计
Kafka 是高性能、可扩展的消息中间件。
Kafka自定义了一组基于TCP的二进制协议
时间轮
Kafka中存在大量的延时操作:延时生产、延时拉取、延时删除等。 基于时间轮的概念自定义实现了一个用于延时功能的定时器。
像其他框架:Netty、Akka、Quartz、Zookeeper等都存在时间轮
Kafka中的时间轮是一个存储定时任务的环形队列,底层采用数组实现,数组中每个元素可以存放一个定时任务列表。TimerTaskList是一个环形的双向链表,链表中的每一项表示的都是定时任务项。
时间轮由多个时间格组成,每个时间格代表当前时间轮的基本时间跨度(tickMs)。时间轮的时间格个数是固定的(wheelSize)。