时间轮Timing wheel

按时间槽组织定时事件,指针随时钟推进处理到期槽。

核心约束
事件按截止时间映射到槽;多层或轮次信息区分远期事件。
适用问题
大量普通超时、可接受时间粒度的定时任务。
边界与取舍
时间精度、层级迁移、长暂停和单槽拥挤影响成本。

常见操作#

n 为待处理计时器数,W 为槽数,H 为轮层数,k 为本次到期或迁移的计时器数。

操作时间复杂度条件与说明
单层轮插入O(1)O(1)到期时间能映射到目标槽,未要求槽内排序;超出覆盖周期需另作处理。
取消已知计时器O(1)O(1)计时器保存可摘除的链表节点或等价句柄;若需在槽内找目标,则与槽长有关。
层级轮插入O(H)O(H)查找合适层级;固定层数的实现可视作常数成本。
推进一个 tick单层 / 固定层数 O(1+k)O(1+k);一般层级检查 O(H+k)O(H+k)k 包括本次处理或迁移的条目;跨越层级边界还可能检查 H 层,定时器回调自身运行时间另计。
遍历 / 清理全部计时器O(WH+n)O(WH+n)逐层扫描槽和链接;具体结构可跳过空槽。

时间与空间#

时间复杂度
插入 / 取消可为 O(1)O(1),到期批次成本不可忽略
存储空间
O(WH+n)O(WH+n)

分辨率、覆盖时长、层级迁移和集中到期决定延迟;时间轮不承诺每个 tick 总工作恒定。

工程中的应用#

1 个案例 · 附源码
基础原理参考资料

Varghese & Lauck · Hashed and Hierarchical Timing Wheels比较简单、哈希与层级时间轮的启动、停止和推进成本。

1 个概念