没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
原 TimingWheel[时间轮]介绍
Kafka的延迟操作是⼀个相对独⽴的组件,他的主要功能是管理延迟操作,
底层依赖于Kafka提供的时间轮实现。JDK本⾝提供的java.util.Timer也可以
实现定时任务,但是如果系统请求量巨⼤,性能要求很⾼,他们底层所依赖
的数据结构存取操作复杂度都是O(nlog(n))
为了将时间复杂度降为o(1),⼀般会使⽤其他⽅式的定时任务组件,⽐如
zookeeper的时间桶⽅式处理session过期,netty也使⽤Hash
WheelTimer这种时间轮的实现。
Kafka时间轮的实现是TimingWheel,他是⼀个存储定时任务的环形队列
(桶),底层使⽤数组实现,数组中每⼀个元素可以存放⼀个TimerTaskList
对象
TimerTaskList是环形双向链表,在其中链表项TimeTaskEntry封装了真正的
定时任务TimerTask。TimerTaskList使⽤expiration字段记录了整个
TimerTaskList的超时时间。TimeTaskEntry中的expirationMs字段记录了超时
时间戳,timerTask字段指向了对应的TimerTask任务.
TimerTask中的delayMs记录了任务的延迟时间,timerTaskEntry记录了
TimerTaskEntry对象
琉璃纱
- 粉丝: 16
- 资源: 298
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0