【青训营】分布式定时任务简述
这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天
分布式定时任务简述
定义
定时任务是指系统为了自动完成特定任务,实时、延时、周期性完成任务调度的过程。分布式定时任务是把分散的、可靠性差的定时任务纳入统一平台,并且实现集群管理调度和分布式部署的一种定时任务管理方式
按照触发时机分类,有:
- 定时任务:特定时间触发,比如今天15:06执行
- 延时任务:延时触发,比如10s后执行
- 周期任务:固定周期时间,或者固定频率周期调度触发,比如每天12点或者每隔5s执行
按照执行方式分类
- 单机任务:随机触发一台机器执行任务,适合计算量小、并发度低的任务
- 广播任务:将一个命令广播到所有机器上执行,比如一起清理日志
- Map任务:一个任务可以拆分为多个子任务,每一个子任务负责一部分计算。适用于计算量大,单机无法满足的任务
- MapReduce任务:在Map任务的基础上,还可以对所有的子任务的结果做汇总计算,适用于计算量大,并且需要对子任务结果做汇总的任务
分布式定时任务vs单机定时任务
关系:都可以实现自动化的实时、延时、周期性完成任务调度的过程
差异:
- 分布式可以支撑更大的业务体量
- 分布式定时任务的性能、稳定性更高
分布式定时任务vs大数据处理引擎
关系:
- 都可以对海量数据做处理
- 性能、稳定性都很高
差异
- 定时不是大数据处理引擎要解决的核心问题
核心架构
分布式定时任务核心要解决触发、调度、执行三个问题
- 触发器:Trigger,解析任务,生成触发事件
- 调度器:Scheduler,分配任务,管理任务生命周期
- 执行器:Executor,获取执行任务单元,执行任务逻辑
除此之外,还有一个控制台Admin,提供任务管理和干预功能
数据流:
第一层:控制台
分布式定时任务的实体约束关系图
- 任务:Job,任务元数据
- 任务实例:JobInstance,任务实例,一个Job执行一次产生一个实例
- 任务结果:JobResult,任务运行出来的结果
- 任务历史:JobHistory,用户可以修改任务信息
任务元数据是用户对任务属性的定义,包括任务类型、调度时机、执行行为等,其状态转换如下
、
任务实例是一个确定的Job的依次运行的实例,第一个属性是Job_id,表示这是哪个任务的实例,第二个是触发时间,第三个是运行的状态和结果,第四个是运行的过程信息
第二层:触发器
触发器的核心职责是给定一系列任务,解析它们的触发规则,在规定的时间点触发任务的调度
设计触发器的时候:
- 需要支持大量任务,因为定时任务往往伴随着高并发
- 需要支持秒级的调度,因为定时任务对时间敏感
- 周期任务需要多次执行
- 需要保证秒级扫描的高性能,并且避免资源浪费
方案1:定时扫描+延时消息
扫描器从数据库中扫描出最近需要执行的定时任务(比如十分钟内 ),然后将信息传递到processor,但是此时某些任务并不一定要立即执行,因此可以将任务发送到延时消息队列MQ中,并且实时向DB更新状态。如果时间到则调度器开始调度并执行,腾讯和字节使用该方案
方案2:时间轮
时间轮是一种高效利用线程资源进行批量化调度的模型,时间轮是一个存储环形队列,底层采用数组实现,数组中每个元素可以存放一个定时任务列表,这种方式是Quartz所采用的方式
相关文章:
![](https://img-blog.csdnimg.cn/img_convert/5f9573fbdfaf7380ec1c2fc1d36ed6b5.png)
【青训营】分布式定时任务简述
这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天 分布式定时任务简述 定义 定时任务是指系统为了自动完成特定任务,实时、延时、周期性完成任务调度的过程。分布式定时任务是把分散的、可靠性差的定时任务纳入统一平台,并且实现集群管理调度和…...
![](https://img-blog.csdnimg.cn/b225d086741b48658083a5e05ad3382a.png)
golang语言本身设计点总结
本文参考 1.golang的内存管理分配 golang的内存分配仿造Google公司的内存分配方法TCmalloc算法;她会把将内存请求分为两类,大对象请求和小对象请求,大对象为>32K的对象。 在了解golang的内存分配之前要知道什么事虚拟内存,虚拟内存是把磁盘作为全局…...
![](https://img-blog.csdnimg.cn/465eb0f461144866b78553e375ab8124.png)
PTA L1-046 整除光棍(详解)
前言:内容包括四大模块:题目,代码实现,大致思路,代码解读 题目: 这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1组成的数字,比如1、11、111、1111等。传说任何一个光棍都能被…...
![](https://img-blog.csdnimg.cn/59bd150a208f490a9bae96b7e544abbc.png)
将小程序代码转成uni-app代码
最近因为公司项目原因需要将小程序的项目转换成uni—app的项目,所以总结了以下几点: 首先你可以先到uni-app的官网简单看一下对它的介绍,本次文章的介绍是针对简单的微信小程序来进行的转化。 在这之前我们来看一下目录对比 下面就来介绍一下…...
![](https://i0.hdslb.com/bfs/face/0b535f3a82e731c68ba4148002f121c3128a9662.jpg)
C语言在游戏中播放音乐
使用 mciSendString 播放音乐 mciSendString 支持 mp3、wma、wav、mid 等多种媒体格式,使用非常简单。这里做一个简单的范例,用 mciSendString 函数播放 MP3 格式的音乐,代码如下: // 编译该范例前,请把 music.mp3 放…...
![](https://img-blog.csdnimg.cn/img_convert/3e49b9596a451fea55e8ed6af5fb3b8c.png)
机器学习算法:随机森林
在经典机器学习中,随机森林一直是一种灵丹妙药类型的模型。 该模型很棒有几个原因: 与许多其他算法相比,需要较少的数据预处理,因此易于设置充当分类或回归模型不太容易过度拟合可以轻松计算特征重要性在本文[1]中,我想…...
![](https://img-blog.csdnimg.cn/img_convert/c6051cbb3ff4c2e7b51a8b2a4067a5d3.png)
如何做好多项目全生命周期的资源调配,提升资源利用效率?【橙子】
随着产品研发中心各团队承接的研发项目数量和规模日趋增加,人均产值和利润目标逐步提升,人均承接的项目数量也逐渐增加,目前缺乏合理的研发资源管理方案,存在多项目研发过程中资源冲突及部分项目研发人员忙闲不均等现象࿰…...
![](https://img-blog.csdnimg.cn/img_convert/718de0977c6e7cdf1e649c4e509ef544.jpeg)
JVM - 内存分配
目录 JVM的简化架构和运行时数据区 JVM的简化架构 运行时数据区 PC寄存器 Java栈 Java堆 方法区 运行时常量池 本地方法栈 栈、堆、方法区交互关系 Java堆内存模型和分配 Java堆内存概述 Java堆的结构 对象的内存布局 对象的访问定位 Trace跟踪和Java堆的参数配…...
![](https://img-blog.csdnimg.cn/b3f5beb7c1174315aa55cb8d22303887.png)
【知识图谱论文】Bi-Link:通过转换器和提示的对比学习桥接来自文本的归纳链接预测
文献题目:Bi-Link: Bridging Inductive Link Predictions from Text via Contrastive Learning of Transformers and Prompts发表期刊:WWW2023代码: https://anonymous.4open.science/r/Bi-Link-2277/. 摘要 归纳知识图的完成需要模型来理解…...
![](https://img-blog.csdnimg.cn/d5682268e7f64b1592957cff52d42562.png)
jieba+wordcloud 词云分析 202302 QCon 议题 TOP 关键词
效果图 步骤 (1)依赖 python 库 pip install jieba wordcloud数据 概览 $ head -n 5 input.txt 中国软件技术发展洞察和趋势预测报告 2023 QCon 大会内容策划思路 FinOps:从概念到落地 开源芯片的发展现状、机遇和未来 乐观者前行࿰…...
![](https://img-blog.csdnimg.cn/img_convert/eca4e2991d15032fadb62557e7318086.png)
包管理工具-npm-npx-yarn-cnpm
代码共享方案 在我们通过模块化的方式将代码划分成一个个小的结构后,在以后的开发中我们就可以通过模块化的方式来封装自己的代码,并且封装成一个工具,这个工具我们可以让同事通过导入的方式来使用,甚至你可以分享给世界各地的程…...
![](https://img-blog.csdnimg.cn/9ede58dbc57f4851840b715450809732.png)
go gin学习记录1
环境: MAC M1,Go 1.17.2,GoLand 默认执行指令的终端,如果没有特别说明,指的都是goland->Terminal 创建项目 Goland中新建项目,在$GOPATH/src/目录下建立t_gin项目。 进入项目,在goland的T…...
![](https://img-blog.csdnimg.cn/img_convert/f1b9263c56aa4d7a8393e7dc22329a5f.png)
Docker常用命令
1:帮助命令docker versiondocker infodocker --help2:镜像命令docker images(列出本地主机上的镜像)各个选项说明:docker imagesREPOSITORY:表示镜docker images像的仓库源TAG:镜像的标签IMAGE IDÿ…...
![](https://img-blog.csdnimg.cn/6f643863c959403cb06cbac7ad342c92.png)
论文写作——公式编辑器、latex表格、颜色搭配器
1、公式编辑器(网页版mathtype可用于latex公式编辑): MathType demo - For DevelopersLive demonstration about the features of Mathtype which allows edition equations and formulas (PNG, flash, SVG, PDF, EPS), based on MathML and compatible with LaTeX.https:/…...
![](https://img-blog.csdnimg.cn/03cb8a479210419ab2770d16ff70bf22.png)
MySQL数据库12——视图(VIEW)
视图概念 视图是一个虚拟表,称其为虚拟表的原因是:视图内的数据并不属于视图本身,而属于创建视图时用到的基本表。可以认为,视图是一个表中的数据经过某种筛选后的显示方式;或者多个表中的数据经过连接筛选后的显示方…...
![](https://img-blog.csdnimg.cn/154bf42ef23f486cb0875b1a850ef3ef.png)
第四代英特尔至强重磅发布,芯片进入下半场:软硬加速、绿色可持续
编辑 | 宋慧 出品 | CSDN 云计算 2023 年的第二周,英特尔重磅发布其企业级芯片领域重要的产品——第四代英特尔 至强 可扩展处理器。作为数据中心处理器当之无愧的王牌产品,迄今为止,英特尔已经向全球客户交付了超8500万颗至强可扩展处理器…...
![](https://www.ngui.cc/images/no-images.jpg)
c++-运算符函数与运算符重载
目录概述例子注意问题概述 运算符重载是函数一个特殊情况,重载的运算符视为特殊的函数,称为运算符函数。 编译系统能依据使用运算符的不同环境,即参数(操作数)的数量或类型的差异,区分同一运算符的不同含义…...
![](https://www.ngui.cc/images/no-images.jpg)
【MySQL Shell】8.9.3 修复 InnoDB ClusterSet 中的成员服务器和集群
根据集群的问题或维护要求,可以使用以下操作来处理其成员服务器。除非另有说明,否则请使用使用 InnoDB Cluster 管理员帐户或服务器配置帐户获取的 Cluster 和 ClusterSet 对象,以便存储在 ClusterSet 对象中的默认用户帐户具有正确的权限。 …...
![](https://img-blog.csdnimg.cn/img_convert/a0fabccf5acdcea4c6790917cd72a6ca.png)
宝塔搭建实战php开源likeadmin通用管理pc端nuxt3源码(三)
大家好啊,我是测评君,欢迎来到web测评。 昨天给大家分享了admin前端的搭建部署方式,今天来给大家分享pc端在本地搭建,与打包发布到宝塔的方法,希望能够帮助到大家,感兴趣的朋友可以自行下载学习。 技术架构…...
![](https://img-blog.csdnimg.cn/img_convert/fedf93a06f52f955e2045444b6cf9504.png)
【C++】---Stack和Queue的用法及其模拟实现
文章目录Stack最小栈栈的弹出压入序列逆波兰表达式求值用栈实现队列模拟实现queue用队列实现栈模拟实现Stack stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。它的使用和之前学习的ve…...
![](https://www.ngui.cc/images/no-images.jpg)
Python GUI编程
Python 提供了多个图形开发界面的库,几个常用 Python GUI 库如下: Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里。Tk8…...
![](https://img-blog.csdnimg.cn/09e6c309bce749d2961eea3226013c90.jpeg)
2023年浙江水利水电施工安全员精选真题题库及答案
百分百题库提供水利水电施工安全员考试试题、水利水电施工安全员考试预测题、水利水电施工安全员考试真题、水利水电施工安全员证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 119.下列关于大模板按照的说法正确的是&#x…...
![](https://www.ngui.cc/images/no-images.jpg)
Solon2 开发之插件,三、插件体外扩展机制(E-Spi)
插件体外扩展机制,简称:E-Spi。用于解决 fatjar 模式部署时的扩展需求。比如: 把一些“业务模块”做成插件包放到体外把数据源配置文件放到体外,方便后续修改 其中, .properties 或 .yml 文件都会做为扩展配置加载&a…...
![](https://www.ngui.cc/images/no-images.jpg)
数据结构与算法(Java版) | 数据结构与算法的关系
从这一节起,咱们就要开始进入到「第二章——数据结构与算法的介绍」的学习中了,总的来说,第二章要讲解的内容其实也不是特别的多,内容也多偏理论,相信大家学起来是会比较轻松愉快的。 接下来,就请大家跟随…...
![](https://www.ngui.cc/images/no-images.jpg)
华科万维C++章节练习3_7
题目: 编程实现两种温度体系华氏温度和摄氏温度的相互转换; 以F作为华氏温度体系的单位,以C作为摄氏温度体系的单位。 要求当输入以F作为单位的温度值时(温度值范围[-500F~500F], 否则提示“数据输入有误!”)将其转换为对应的摄氏…...
![](https://img-blog.csdnimg.cn/5bf90c1688a144728f0983c1dc5ecec7.png)
CHAPTER 5 Jenkins SonarQube
Jenkins & SonarQube5.1 安装SonarQube1. 下载镜像2. 导出到其他服务器3. 准备工作4. docker-compose文件5. 启动容器5.2 登录SonarQube1.登录2. 安装中文语言插件3. 安装其他插件5.3 部署扫描器sonar-scanner1. 部署sonar-scanner2. 新建项目3. 扫描代码4. 查看报告5.4 Je…...
![](https://www.ngui.cc/images/no-images.jpg)
[AAAI 2023] Oral : Zero-shot 零样本/ Few-shot 少样本收录论文集合
零样本 (7篇): CALIP: Zero-Shot Enhancement of CLIP with Parameter-free AttentionGuo Ziyu; Zhang Renrui; Qiu Longtian; ma Xianzheng; Miao Xupeng; He Xuming; Cui BinMaximum Entropy Population-Based Training for Zero-Shot Human-AI CoordinationZhao …...
![](https://www.ngui.cc/images/no-images.jpg)
驱动开发 2.13
设备树 设备树就是一种描述硬件信息的树形结构,设备树上有很多设备节点,每一个设备节点都描述了一个硬件设备信息,设备节点中也可以再包含子设备节点和设备属性,同一个节点的不同属性是以链表结构存储,设备树有.dts设…...
![](https://img-blog.csdnimg.cn/113e06e2dfdb40d3b8bac1f45e8dd6dd.png)
【数据库】sql函数和多表关联查询
目录 一,SQL函数 1,聚合函数 1, count函数 2, AVG函数 3, SUM函数 4, MAX函数 5, MIN函数 6,数据分组——GROUP BY 7,限定组的结果,HAVING 8&#x…...
![](https://www.ngui.cc/images/no-images.jpg)
6-周赛332总结
6-周赛332总结 过了Q1和Q2,Q2知道用二分但是边界处理的不是很好,迷迷糊糊过的(手动再移动了下返回值…) Q3知道将子字符串的值取出来,将最短位置放在哈希表中,然后异或在哈希表中找值。但是我这个猪头脑袋…...
![](https://img-blog.csdnimg.cn/img_convert/66040511856899dc17d2a6dd1bbd52da.png)
沈阳做微网站/岳阳网站建设推广
手机“恢复出厂设置”后,真会像新机一样流畅吗?答案你可能不信在互联网时代,移动支付已经普及,相比于以前,现在不管是工作还是生活,我们都需要使用到手机,也相信很多小伙伴每天醒来的第一件事情࿰…...
![](/images/no-images.jpg)
免费申请淘宝账号注册/北京百度seo关键词优化
Java6,Axis2、XFire、CXF1、JWS是Java语言对WebService服务的一种实现,用来开发和发布服务。而从服务本身的角度来看JWS服务是没有语言界限的。但是Java语言为Java开发者提供便捷发布和调用WebService服务的一种途径。2、Axis2是Apache下的一个重量级WebService框架…...
![](https://img-blog.csdnimg.cn/img_convert/39119fac39059b64817699818002d26a.png)
现在哪些做进口商品的电商网站/百度网盘下载app
配置本地tomcat服务器时间查看时间 内容精选换一换弹性云服务器显示的Windows操作系统时间与本地标准时间不一致。系统时间由于受到网络或一些进程驱动的影响可能会出现和标准时间不一致的情况。手动同步系统时间。单击桌面右下角的“更改日期和时间设置”,打开“日…...
![](https://img-blog.csdnimg.cn/img_convert/677db526d9103b74cdfe62f1fd5f8de9.png)
徐州手机网站建设公司哪家好/搜索引擎优化答案
2017 年 10 月 15 日,Kubernetes End User Conference (KEUC) 即将揭开神秘面纱。聚焦 Kubernetes 中国行业应用与技术落地,致力于为业界带来最新 Kubernetes 与容器技术和行业应用案例展示,本次大会邀请到了 Google、VMware、华为、IBM、网易…...
![](http://www.hanjunxing.com/blog/wp-content/uploads/2009/08/15.jpg)
农用地转建设用地结果查询网站/百度云搜索引擎入口
2019独角兽企业重金招聘Python工程师标准>>> 随着宽带的普及和网速的提高,人们上网冲浪时对网站打开速度的容忍度在不断降低,网站的打开速度已经成为可用性的前提,甚至直接影响网站的收入。 Google最近第一次完整地书面提出网页访…...
青岛seo搜索优化/seo手机关键词排行推广
前言 本文讲述怎么实现动态加载组件,并借此阐述适配器模式。 一、普通路由例子 import Center from page/center; import Data from page/data;function App(){return (<Router><Switch><Route exact path"/" render{() > (<Redirec…...