参考文章

http://www.cse.wustl.edu/~cdgill/courses/cs6874/TimingWheels.ppt

http://cseweb.ucsd.edu/users/varghese/PAPERS/twheel.ps.Z

参考文章

http://www.cnblogs.com/zhongwencool/p/timing_wheel.html

https://www.confluent.io/blog/apache-kafka-purgatory-hierarchical-timing-wheels/

https://my.oschina.net/u/565871/blog/157056

http://www.ibm.com/developerworks/cn/linux/l-cn-timers/

io.netty.util.HashedWheelTimer

首先,给出一个基本模型

定时器的实现,需要具备以下几个行为,这也是在后面评判各种定时器实现的一个基本模型 [1]:

StartTimer(Interval, TimerId, ExpiryAction)

注册一个时间间隔为 Interval 后执行 ExpiryAction 的定时器实例,其中,返回 TimerId 以区分在定时器系统中的其他定时器实例。时间复杂度取绝于数据结构。

StopTimer(TimerId)

根据 TimerId 找到注册的定时器实例并执行 Stop。时间复杂度为O(1)。

PerTickBookkeeping()

在一个 Tick 内,定时器系统需要执行的动作,它最主要的行为,就是检查定时器系统中,是否有定时器实例已经到期。时间复杂度取绝于数据结构。

基于无序链表的定时器

基于有序链表的定时器

基于树的定时器

基于最小堆的定时器

基于简单时间轮的定时器

netty之基于Hashed无序(有序)的时间轮定时器

linux之基于层级结构的时间轮定时器

各种定时器时间复杂度和内存复杂度比较

linux时间轮算法,关于时间轮的设计 linux hashed Hierarchical timing wheel相关推荐

  1. java 时间轮算法_时间轮算法(TimingWheel)是如何实现的?

    前言 我在2. SOFAJRaft源码分析-JRaft的定时任务调度器是怎么做的?这篇文章里已经讲解过时间轮算法在JRaft中是怎么应用的,但是我感觉我并没有讲解清楚这个东西,导致看了这篇文章依然和没 ...

  2. 小顶堆时间复杂度_时间轮算法以及时间轮在Netty和Kafka中的应用的

    大家好,我是yes. 最近看 Kafka 看到了时间轮算法,记得以前看 Netty 也看到过这玩意,没太过关注.今天就来看看时间轮到底是什么东西. 为什么要用时间轮算法来实现延迟操作? 延时操作 Ja ...

  3. java 时间轮算法_时间轮算法解析(Netty HashedWheelTimer源码解读)

    1.背景 时间轮算法可以用于高效的执行大量的定时任务. 在Netty中的一个典型应用场景是判断某个连接是否idle,如果idle(如客户端由于网络原因导致到服务器的心跳无法送达),则服务器会主动断开连 ...

  4. 实现较低的计时器粒度以重传TCP(RTO):时间轮算法如何减少开销

    <TCP/IP协议栈:TCP超时重传机制> Table of Contents 计时器轮算法 使用计时器轮算法实现RTO 概要 AIX®传输控制协议(TCP)为每个连接维护七个计时器: 建 ...

  5. hutool的定时任务不支持依赖注入怎么办_设计一个任务调度算法,时间轮算法,比优先队列更高效...

    当年我还是个学生的时候,有一次去参加欢聚时代的一个面试,有一道面试题记忆尤新,让你来实现一个定时任务,你会怎么做?为了简化问题,我们只用考虑内存方案,不用考虑数据持久化. 数组法 最简单的,我们可以把 ...

  6. (HTM)时间沉积池算法细节-翻译

    (HTM)时间沉积池算法细节-翻译 层次时序记忆是numenta公司发布的一种人工智能算法,发布为nupic项目. 如果你对HTM感兴趣,我建立了一个群,我们共同学习交流.515743445. 最近翻 ...

  7. 孙玄辜教授:基于Linux内核的时间轮算法设计实现【附代码】

    文章目录 1.时间轮算法基本思想 2.定时器的添加 3.定时器到期处理 孙玄:毕业于浙江大学,现任转转公司首席架构师,技术委员会主席,大中后台技术负责人(交易平台.基础服务.智能客服.基础架构.智能运 ...

  8. linux现代时间轮算法,linux2.6定时器的时间轮算法分析

    1.Overview 常用的定时器实现算法有两种:红黑树和时间轮(timing wheel). 在Linux2.6的代码中,kernel/timer.c文件实现了一个通用定时器机制,使用的是时间轮算法 ...

  9. 时间轮算法(TimingWheel)

    时间轮算法的应用非常广泛,在 Dubbo.Netty.Kafka.ZooKeeper.Quartz 的组件中都有时间轮思想的应用,甚至在 Linux 内核中都有用到. 其思想理论基础可以参考论文:ht ...

最新文章

  1. 数据库中的约束和三大范式
  2. Leecode22. 括号生成——Leecode大厂热题100道系列
  3. python的主要版本_Python目前主要有( )两个主要版本。_学小易找答案
  4. Lucene.Net(转)
  5. MySQL常用函数 二
  6. Masterlab 1.1 发布,基于敏捷开发的项目管理工具
  7. TIOBE 7月编程语言排行:各大城市程序员的工资状况又又又涨了
  8. python3 介绍
  9. 用互联网模式打造智慧城市的“城市云”
  10. react进行状态管理的几种方式
  11. python画五角星_Python第25课:海龟绘图_自定义函数的应用
  12. SpringBoot整合EasyExcel实现Excel表格的导出功能
  13. 为什么catagory可以增加成员方法,不可以增加成员变量
  14. 02 Java基础语法(变量+数据类型+运算符)
  15. 不准把水放在计算机旁英语翻译,英语翻译translationpra水ctice.ppt
  16. 2018 年度新增开源软件排行榜之国产 TOP 50[转载]
  17. 《罗辑思维》为什么过时了?
  18. matlab双端测距算法,一种使用亚当姆斯法的双端故障测距算法
  19. SCA软件成分分析 简析(一)
  20. PHP集成paypal支付

热门文章

  1. 27岁华裔小伙一战成名!搞出美国新冠最准预测模型
  2. 谷歌大脑联手Hinton提出SimCLR新框架,疯狂提升自监督学习性能 | 北邮毕业生一作...
  3. 2020年数据科学领域4个最热门的趋势
  4. 【每日一算法】爬楼梯
  5. 邮件服务器SMTP概述
  6. HTMLParser的初步学习
  7. 静态Web服务器-多任务版
  8. 再次学习基础爬虫,爬取大学排名。
  9. 本科-人工智能复习题
  10. 教程 | 基于LSTM实现手写数字识别