时间轮原理如何具体应用于构建高效框架?
- 内容介绍
- 文章标签
- 相关推荐
本文共计5698个文字,预计阅读时间需要23分钟。
在平时开发中,经常需要与定时任务打交道。时间轮以其精巧的设计,可被用来高效处理定时任务。
一、时间轮简介1.1 为什么使用时间轮在平时开发中,经常需要与定时任务打交道。时间轮以其精巧的设计,可被用来高效处理定时任务。
在平时开发中,经常会与定时任务打交道。时间轮以其精妙的设计,可以被用来高效的处理定时任务。 一、时间轮简介 1.1 为什么要使用时间轮在平时开发中,经常会与定时任务打交道。下面举几个定时任务处理的例子。
1)心跳检测。在Dubbo中,需要有心跳机制来维持Consumer与Provider的长连接,默认的心跳间隔是60s。当Provider在3次心跳时间内没有收到心跳响应,会关闭连接通道。当Consumer在3次心跳时间内没有收到心跳响应,会进行重连。Provider侧和Consumer侧的心跳检测机制都是通过定时任务实现的,而且是本篇文章要分析的时间轮HashedWheelTimer处理的。
2)超时处理。在Dubbo中发起RPC调用时,通常会配置超时时间,当消费者调用服务提供者出现超时进行一定的逻辑处理。那么怎么检测任务调用超时了呢?我们可以利用定时任务,每次创建一个Future,记录这个Future的创建时间与超时时间,后台有一个定时任务进行检测,当Future到达超时时间并且没有被处理时,就需要对这个Future执行超时逻辑处理。
3)Redisson分布式锁续期。在分布式锁处理中,通常会指定分布式锁的超时时间,同样会在finally块里释放分布式锁。但是有一个问题时,通常分布式锁的超时时间不好判断,如果设置短了业务却没执行完成就把锁释放掉了,或者超时时间设置很长,同样也会存在一些问题。
本文共计5698个文字,预计阅读时间需要23分钟。
在平时开发中,经常需要与定时任务打交道。时间轮以其精巧的设计,可被用来高效处理定时任务。
一、时间轮简介1.1 为什么使用时间轮在平时开发中,经常需要与定时任务打交道。时间轮以其精巧的设计,可被用来高效处理定时任务。
在平时开发中,经常会与定时任务打交道。时间轮以其精妙的设计,可以被用来高效的处理定时任务。 一、时间轮简介 1.1 为什么要使用时间轮在平时开发中,经常会与定时任务打交道。下面举几个定时任务处理的例子。
1)心跳检测。在Dubbo中,需要有心跳机制来维持Consumer与Provider的长连接,默认的心跳间隔是60s。当Provider在3次心跳时间内没有收到心跳响应,会关闭连接通道。当Consumer在3次心跳时间内没有收到心跳响应,会进行重连。Provider侧和Consumer侧的心跳检测机制都是通过定时任务实现的,而且是本篇文章要分析的时间轮HashedWheelTimer处理的。
2)超时处理。在Dubbo中发起RPC调用时,通常会配置超时时间,当消费者调用服务提供者出现超时进行一定的逻辑处理。那么怎么检测任务调用超时了呢?我们可以利用定时任务,每次创建一个Future,记录这个Future的创建时间与超时时间,后台有一个定时任务进行检测,当Future到达超时时间并且没有被处理时,就需要对这个Future执行超时逻辑处理。
3)Redisson分布式锁续期。在分布式锁处理中,通常会指定分布式锁的超时时间,同样会在finally块里释放分布式锁。但是有一个问题时,通常分布式锁的超时时间不好判断,如果设置短了业务却没执行完成就把锁释放掉了,或者超时时间设置很长,同样也会存在一些问题。

