20 | 详解时钟轮在RPC中的应用
何小锋
该思维导图由 AI 生成,仅供参考
你好,我是何小锋。上一讲我们学习了在分布式环境下如何快速定位问题,简单回顾下重点。在分布式环境下,RPC 框架自身以及服务提供方的业务逻辑实现,都应该对异常进行合理地封装,让使用方可以根据异常快速地定位问题;而在依赖关系复杂且涉及多个部门合作的分布式系统中,我们也可以借助分布式链路跟踪系统,快速定位问题。
现在,切换到咱们今天的主题,一起看看时钟轮在 RPC 中的应用。
定时任务带来了什么问题?
在讲解时钟轮之前,我们先来聊聊定时任务。相信你在开发的过程中,很多场景都会使用到定时任务,在 RPC 框架中也有很多地方会使用到它。就以调用端请求超时的处理逻辑为例,下面我们看一下 RPC 框架是如果处理超时请求的。
回顾下[第 17 讲],我讲解 Future 的时候说过:无论是同步调用还是异步调用,调用端内部实行的都是异步,而调用端在向服务端发送消息之前会创建一个 Future,并存储这个消息标识与这个 Future 的映射,当服务端收到消息并且处理完毕后向调用端发送响应消息,调用端在接收到消息后会根据消息的唯一标识找到这个 Future,并将结果注入给这个 Future。
那在这个过程中,如果服务端没有及时响应消息给调用端呢?调用端该如何处理超时的请求?
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
时钟轮在RPC中的应用是一种高效的定时任务执行机制。它通过将任务放入时间槽中,并在固定的单位时间内进行跳动和执行,有效减少了额外的扫描操作,解决了CPU浪费的问题。在RPC框架中,时钟轮可以处理请求超时、启动超时和定时心跳等功能,提高系统性能和稳定性。时钟轮的使用需要注意时间槽位的单位时间和槽位数量,以及根据具体业务场景设置周期和时间槽数。除了调用端的超时处理和定时心跳,RPC框架中还有其他功能可以应用时钟轮,这种机制为系统的定时任务提供了高效的执行方式。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《RPC 实战与核心原理》,新⼈⾸单¥59
《RPC 实战与核心原理》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(19)
- 最新
- 精选
- 雨霖铃声声慢时钟轮可以实现延时消息的功能,比如让一个任务几分钟之后发送一条消息出去。在比如可以实现订单过期功能,用户下单10分钟没付款,就取消订单,可以通过时钟轮实现。
作者回复: 是的,真棒
2020-04-06841 - 忆水寒在java里面和Netty框架里面有这个类,TimeWheel时钟轮模型。
作者回复: 是的,netty里面有实现
2020-04-0628 - qinsi时钟轮存取任务的时间复杂度是O(1),相比之下优先队列的时间复杂度是O(logN)
作者回复: 👍
2020-04-06516 - 高源时钟轮这个我头一次听到,老师如果并发线程比较多,单位时间是不是划分很细啊,但是我有个疑问例如我同时有5个线程几乎之间间隔3到5毫秒,又有3个线程10到100毫秒的,我时钟轮也得调整具体怎么划分的,这么短时间内如何保证时钟轮准确性,老师哪有参考代码学习一下
作者回复: 一般都是统一划分,时间轮主要解决是长时间没有触发的问题,不解决实时性
2020-04-06310 - 719提高扫描定时任务效率还有一种方法是所有定时任务放入按照时间排序的优先队列,每次只扫描队首节点。从性能上看,哪种方法好一些?
作者回复: 应该是不同场景吧
2020-05-0621 - 钱定时任务相关解决方案: 1:线程休眠,可能需要N多线程 2:定时轮询,可能会空耗许多CPU轮询 3:时间轮,和时钟原理相似,规避1/2的缺陷 只有涉及到定时任务,就可以使用时钟轮来解决,比如: 调用端超时处理、调用端和服务端的启动超时处理、定时心跳检测、延迟消息队列的延迟消息发送等。 netty框架中就有时钟轮的实现,可以研究一下。2020-05-16110
- 🐠请问老师,为什么说多层时间轮中的任务会被重复扫描呢?就上面例子的任务C来说,它处于下一层的第1个槽位,那么经过1s后,它被分布到当前的时间轮中,然后经过600ms后跳动到当前时间轮的第6个槽位,此时才会触发任务C。重复扫描的意思就是说在下一层的第1个槽位被扫描过一次,然后在当前时间轮的第6个槽位又被扫描过一次吗?2021-06-1723
- 张申傲调用方的异常重试也可以考虑使用时间轮。感触:软件设计的本质都是生活~2021-02-052
- renpeng技术的思想很多都是源于生活2020-05-311
- 鸠摩智redis中的key的超时是不是也用时钟轮实现的?2020-05-1181
收起评论