昆山移动网站建设,深圳福田区福田社区,wordpress 联盟插件怎么用,关键词排名优化易下拉霸屏概述
在一些中间件中我们经常见到时间轮控制并发和熔断。
那么这个时间轮具体是什么呢#xff0c;又是怎么使用的呢。
简介
其实时间轮可以简单的理解成我们日常生活中的时钟。 时钟里的指针一直在不停的转动#xff0c;利用这个我们可以实现定时任务#xff0c;目前lin…概述
在一些中间件中我们经常见到时间轮控制并发和熔断。
那么这个时间轮具体是什么呢又是怎么使用的呢。
简介
其实时间轮可以简单的理解成我们日常生活中的时钟。 时钟里的指针一直在不停的转动利用这个我们可以实现定时任务目前linux里的crontab就是用的时间轮实现的。
我们可以这么想象一下时间轮就像一个环形链表当秒针指向1刻度的时候其实就代表过去了1秒的时候然后在1位置这个元素也是一个链表从这个链表中取出多个任务去执行这些被执行的任务就实现了延时1秒执行的需求。
再配个图来展示下
进一步深化理解
上面只是单个时间轮但是实际中使用的场景会复杂很多比如要延时一个月这个时候上面这个单圈的时间轮的刻度就不够用了。 此时可以采用的方法 1-扩展刻度 2-记录时间轮的圈数当从指针指向的刻度中取任务时先对所有任务的round --取出round0的任务去执行 3-引入层级时间轮再引入一个月时间轮一个天时间轮将任务拆分到上级时间轮中当上级时间轮的指针取出任务时如果时间还没到就降级到下级时间轮依次类推
上面3中方法中1肯定不采用太离谱了如果要扩展1万个刻度太没效率了。 2和3都是可以采用的不过3采用的多一点拆分多个时间轮组合的形式更加灵活