承接上文
承接上文,让我们基本上已经知道了「时间轮算法」原理和核心算法机制,接下来我们需要面向于实战开发以及落地角度进行分析如何实现时间轮的算法机制体系。
前言回顾
什么是时间轮
- 调度模型:时间轮是为解决高效调度任务而产生的调度模型/算法思想。
- 数据结构:通常由hash表和双向链表实现的数据结构。
为什么用时间轮?
对比传统队列的优势
相比传统的队列形式的调度器来说,时间轮能够批量高效的管理各种延时任务、周期任务、通知任务等等。例如延时队列/延时任务体系
延时任务/队列体系
延时任务、周期性任务,应用场景主要在延迟大规模的延时任务、周期性的定时任务等。
案例-Kafka的延时操作系列
比如,对于耗时的网络请求(比如Produce时等待ISR副本复制成功)会被封装成DelayOperation进行延迟处理操作,防止阻塞Kafka请求处理线程,从而影响效率和性能。
传统队列带来的性能问题
Kafka没有使用传统的队列机制(JDK自带的Timer+DelayQueue实现)。因为时间复杂度上这两者插入和删除操作都是 O(logn),不能满足Kafka的高性能要求。文章来源:https://www.toymoban.com/news/detail-419307.html
基于JDK自带的Timer+DelayQueue实现
JDK Timer和DelayQu文章来源地址https://www.toymoban.com/news/detail-419307.html
到了这里,关于手把手教你针对层级时间轮(TimingWheel)延时队列的实战落地的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!