这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
时间轮原理
什么是时间轮?
时间轮(Timing Wheel)是一种高效管理定时任务的数据结构,类似于生活中的时钟。
基本原理
单层时间轮
时间轮结构:
┌───┬───┬───┬───┬───┬───┐
│ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ ← 槽位(slots)
├───┼───┼───┼───┼───┼───┤
│ │ │A │ │B │ │ ← 任务(A 在槽位 2,B 在槽位 4)
└───┴───┴───┴───┴───┴───┘
↑
当前指针(current_slot)
时间轮转动:
- 每秒转动一格
- 指针指向的槽位,其中的任务到期执行方案落地
时间复杂度
| 操作 | 时间复杂度 | 说明 |
|---|---|---|
| 添加任务 | O(1) | 直接计算槽位 |
| 获取到期任务 | O(1) 平均 | 只处理当前槽位 |
| 空间复杂度 | O(n) | n 为槽数 |
优缺点
优点
- ✅ 性能极高(O(1))
- ✅ 精度可控
- ✅ 内存占用固定
缺点
- ❌ 只支持固定间隔的延时
- ❌ 长延时任务需要大容量时间轮