当前位置: 首页 > news >正文

时间轮算法概念

概述

在一些中间件中我们经常见到时间轮控制并发和熔断。

那么这个时间轮具体是什么呢,又是怎么使用的呢。

简介

其实时间轮可以简单的理解成我们日常生活中的时钟。
时钟里的指针一直在不停的转动,利用这个我们可以实现定时任务,目前linux里的crontab就是用的时间轮实现的。

我们可以这么想象一下,时间轮就像一个环形链表,当秒针指向1刻度的时候其实就代表过去了1秒的时候,然后在1位置这个元素也是一个链表,从这个链表中取出多个任务去执行,这些被执行的任务就实现了延时1秒执行的需求。

再配个图来展示下
在这里插入图片描述

进一步深化理解

上面只是单个时间轮,但是实际中使用的场景会复杂很多,比如要延时一个月,这个时候上面这个单圈的时间轮的刻度就不够用了。
此时可以采用的方法:
1-扩展刻度
2-记录时间轮的圈数,当从指针指向的刻度中取任务时先对所有任务的round --,取出round=0的任务去执行
3-引入层级时间轮,再引入一个月时间轮,一个天时间轮,将任务拆分到上级时间轮中,当上级时间轮的指针取出任务时,如果时间还没到,就降级到下级时间轮,依次类推

上面3中方法中1肯定不采用,太离谱了,如果要扩展1万个刻度,太没效率了。
2和3都是可以采用的,不过3采用的多一点,拆分多个时间轮组合的形式更加灵活

http://www.lryc.cn/news/7681.html

相关文章:

  • [SCTF2019]babyre 题解
  • 全志H3系统移植 | 移植主线最新uboot 2023.04和kernel 6.1.11到Nanopi NEO开发板
  • vue项目第四天
  • 「C语言进阶」数据内存的存储
  • 面试必问:进程和线程的区别(从操作系统层次理解)
  • ModuleNotFoundError: No module named ‘apex‘与 error: legacy-install-failure
  • Python3 VScode 配置
  • VMware 修复了三个身份认证绕过漏洞
  • 实现一个简单的Database10(译文)
  • CTF-取证题目解析-提供环境
  • 计算机基础 | 网络篇 | TCP/IP 四层模型
  • 实时数据仓库
  • leetcode 1250. 检查「好数组」
  • JDK动态代理和CGLib动态代理的区别
  • Leetcode.1250 检查「好数组」
  • WMS系统推荐,如何选到适合企业的仓库管理系统
  • C语言的期末复习
  • 强化学习之DQN论文介绍
  • 使用luaBridge添加自己的C++脚本插件能力
  • 再拾起博客
  • Mybatis流式游标查询-大数据DB查询OOM查询问题
  • 以before为例 完成一个aop代理强化方法案例
  • 好记性不如烂笔头之Java基础复习笔记
  • MyBatisPlus
  • 【C语言】编程初学者入门训练(11)
  • HTTP 1.1响应码
  • 常用设计模式介绍
  • 关于货物物品横竖摆放的问题
  • 人员定位需求多,场景目标各不同
  • 怎么解决首屏加载速度过慢的问题