分布式定时任务-学习笔记

news2024/9/28 13:25:18

1 发展历程

1.1 Linux命令-CronJob

         只能控制单台机器

1.2 任务调度-Quartz

         单任务极致控制

1.3 分布式定时任务

1.3.1 定时任务

        系统为了自动完成特定任务,实时、延时、周期性完成任务调度的过程

1.3.2 分布式定时任务

        把分散的、可靠性差的定时任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式

1.3.3 触发时机分类

  • 定时任务:特定时间触发
  • 延时任务:延时触发,比如10s后执行
  • 周期任务:固定周期时间或固定频率周期调度触发

1.3.4 分布式定时任务优点

  • 平台化管理
  • 分布式部署
  • 支持海量数据

1.4 执行方式

  • 单机任务:随机触发一台机器执行任务
  • 广播任务:广播到所有机器上执行同一个任务
  • Map任务:一个任务可以分出多个子任务,每个子任务负责一部分的计算
  • MapReduce任务:在Map任务的基础上,可以对任务汇总

2 实现原理

2.1 核心架构

  • 触发器:解析任务,生成触发事件
  • 调度器:分配任务,管理任务生命周期
  • 执行器:获取执行任务单元,执行任务逻辑
  • 控制台:提供任务管理和干预的功能

 2.1.1 数据流

 2.1.2 功能架构

 

2.2 控制台

2.2.1 基本概念

  • 任务:任务元数据
  • 任务实例:任务运行的实例
  • 任务结果:任务实例运行的结果
  • 任务历史:用户可以修改任务信息,任务实例对应的任务元数据可以不同,因而使用任务历史存储

        每次执行任务都会产生一个任务实例,任务实例执行的结果可能会失败,所以会有n个任务结果。

2.2.2 任务元数据

        用户对任务属性定义,包括任务类型调度时机、执行行为等。

2.2.3 任务实例

        是一个确定的Job的一次运行实例

 

2.3 触发器

2.3.1 核心职责

        给定一系列任务,解析它们的触发规则,在规定的时间点触发任务的调度。

        需支持大量任务、需支持秒级调度

2.3.2 方案1

        定期扫描+延时消息

 2.3.3 方案2-时间轮

        时间轮是一种高效利用线程资源进行批量化调度的一种调度模型。时间轮是一个存储环形队列,底层采用数组实现,数组中的每个元素可以存放一个定时任务列表。

 

2.3.4 高可用

        存储上做资源隔离,运行时分开执行,部署时采用多机房。

        多触发器可以用分布式锁(Redis锁、zookeeper锁)保障业务不会混乱。

2.4 调度器

2.4.1 节点选择

  • 随机节点执行:选择集群中一个可用的执行节点执行调度任务
  • 广播执行:在集群中所有的执行节点分发调度任务并执行。
  • 分片执行:按照用户自定义分片逻辑进行拆分,分发到集群中不同结点并行执行,提升资源利用效率

2.4.2 任务分片

        通过任务分片来提高任务执行的效率和资源的利用率

2.4.3 任务编排

        使用有向无环图DAG进行可视化任务编排

2.4.4 故障转移

        确保部分执行单元任务失败时,任务最终成功

2.4.5 高可用

        调度器可以集群部署,做到完全的无状态,靠消息队列的重试机制保障任务一定会被调度。

 

2.5 执行器

        基于注册中心,可以做到执行器的弹性扩缩容

         状态上报≈心跳检测

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/381679.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VScode下 ESP32 下载程序

ESP32-S3 下载方式可以通过UART0 下载,USB 下载,JTAG下载,还可以使用WIFI进行远程OTA升级程序。插件底栏按键介绍:①选择串口端口号,如COM3; ②选择芯片型号; ③工程idf设置,相当于menuconfig; …

Redis缓存雪崩、缓存击穿、缓存穿透

用户的数据一般都是存储于数据库,数据库的数据是落在磁盘上的,磁盘的读写速度可以说是计算机里最慢的硬件了。 当用户的请求,都访问数据库的话,请求数量一上来,数据库很容易就奔溃的了,所以为了避免用户直…

【Java】Spring Boot 日志文件

文章目录SpringBoot日志文件1. 日志有什么用2. 日志怎么用3. 自定义日志打印3.1 在程序中得到日志对象3.2 使用日志对象打印日志4. 日志级别4.1 日志级别有什么用?4.2 日志级别的分类与使用5. 日志持久化6. 更简单的日志输出--lombok6.1 添加 lombok 依赖6.2 输出日…

操作系统真相还原——第6章内存管理系统

第八章 内存管理系统 makefile 编译整个项目,如果改变局部关系,只靠人工难以维护文件间的依赖关系,所以通过make程序进行处理 makefile文件是make程序的搭档:发现某个文件更新后,只编译该文件和受该文件影响的相关文…

为什么95%的Java程序员人,都是用不好Synchronized?

Synchronized锁优化 jdk1.6对锁的实现引入了大量的优化,如自旋锁、适应性自旋锁、锁消除、锁粗化、偏向锁、轻量级锁等技术来减少锁操作的开销。 锁主要存在四中状态,依次是:无锁-> 偏向锁 -> 轻量级锁 -> 重量级锁,他们…

upload-labs通关详细教程

文章目录文件上传要点1、前端验证绕过做题步骤源码分析2、Content-Type方式绕过做题步骤源码分析3、黑名单绕过做题步骤源码分析4、.htaccess文件绕过简介做题步骤源码分析5、后缀大小写绕过简介做题步骤源码分析6、文件后缀(空)绕过简介做题步骤源码分析…

CAN工具-VSpy(ValueCAN) - Panel面板(续)

继续上次的Panel面板介绍!!!7. LED 控件LED控件可以用作指示器。在Graphical Panels中选中该控件,在界面右侧侧拉框的Properties中可设置LED控件的通用属性。LED控制属性LED On Color:双击打开标准的Windows颜色选择器…

Vue 3.0 学习笔记之基础知识

系列文章目录 提示:阅读本章之前,请先阅读目录 文章目录系列文章目录前言Vue 3.0 创建与Vue2.0对比的变化关闭语法检查setup 组合式函数compositions前言 Vue 3.0 创建 与Vue2.0对比的变化 关闭语法检查 lintOnSave: false setup 组合式函数compositions…

Git 初体验 (处理 .ssh 文件的相关问题)

目录前沿环境入门教程出现的问题问题 1 :C 盘用户文件中找不到 .ssh 文件问题 2 : 在 clone 远程仓库文件时报错问题3 : 第一次从 Gitee clone 项目时会弹出一个 Git 窗口,要你输入用户和密码获取 credential (可以信任的证明)自我实践总结引用前沿 很早前安装了 G…

二叉树——删除二叉搜索树中的节点

删除二叉搜索树中的节点 链接 给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。 一般来说,删除节点可…

2022_SPL_CMINet

Cross-Stage Multi-Scale Interaction Network for RGB-D Salient Object Detection 用于rgb-d显着目标检测的跨阶段多尺度交互网络 目录 文章目录 前言 一、引言 二、提出的方法 A.概述 感觉有点乱,没看太懂,没关系,我们接着往下看 …

Postman 实现 UI 自动化测试

看到这篇文章的标题,是不是有小伙伴会感到惊讶呢? Postman 不是做接口测试的吗?为什么还能做 UI 自动化测试呢? 其实,只要你了解 Selenium 的运行原理,就可以理解为什么 Postman 也能实现 UI 自动化测试了…

EPICS motor模块

一、概要 1) 在EPICS motor模块中的是什么并且它为了什么? 2) 支持的电机控制器和模型 3)电机记录特性 4)配置示例 5)反馈 6) 重试 7) 回程差矫正 8)发行 二、术…

Linux上的校验和验证

校验和(checksum)程序用来从文件中生成相对较小的唯一密钥。我们可以重新计算该密钥,用以检查文件是否发生改变。修改文件可能是有意为之(添加新用户会改变密码文件),也可能是无意而为(从CD-ROM…

Java:Java仍然处于领先地位?

没有多少编程语言能够自吹自擂并持续流行20多年,但Java就是其中之一。Java应用程序不仅局限于web和移动开发,而且给大数据和人工智能留下了深刻的印象。不用多说,让我们讨论一下Java流行的几个原因!!1.实用性根据JamesGosling的说法&#xff…

QT+OpenGL 面剔除和帧缓冲

QTOpenGL 面剔除和帧缓冲 本篇完整工程见gitee:QtOpenGL 对应点的tag,由turbolove提供技术支持,您可以关注博主或者私信博主 面剔除 OpenGL能够检查所有面向(Front Facing)观察者的面,并且渲染他们,而丢…

springboot logback日志+异常+阿里云日志 aliyun-log-logback-appender

前言最近有个新项目用了,springboot3.0,以前项目日志保存得方式是阿里云云服务自动读取日志文件,最近项目部署得方式可能有变化,所以新项目用logbackaliyun-log-logback-appender得方式保存到阿里云日志服务。用logback得原因主要…

《OpenGL宝典》--统一变量

统一变量 [layout (location 0)] uniform float f 1.0f;若设置layout,则不需要使用glGetUniformLocation来获取统一变量的位置 使用glUniform*传递值,glUniformMatrix*()设置矩阵统一变量。 glUseProgram(myShader); glUniform1f(0,45.2f);//0为loc…

思迅软锁安装配置说明

思迅软锁安装配置说明 一、软锁安装、申请及配置流程 1.软件安装环境要求 2.软件安装配置流程 步骤1: 在平台下载软锁程序并安装。在安装了总部数据库的服务器上,运行“思迅软锁服务.exe”程序,按照指引进行安装,安装完成后将在电脑的桌面上…

微服务之Gateway服务网关

🏠个人主页:阿杰的博客 💪个人简介:大家好,我是阿杰,一个正在努力让自己变得更好的男人👨 目前状况🎉:24届毕业生,奋斗在找实习的路上🌟 &#x1…