分布式任务调度

  • 先介绍下:Spring&SpringBoot任务调度工具
  • 传统定时任务存在的问题
  • 分布式环境里, 任务调度的困难及解决思想
  • 高可用任务调度原理
  • 业界的流行的方案框架:
  • 这里主要介绍下:xxl调度配置

先介绍下:Spring&SpringBoot任务调度工具

相信@Scheduled(cron = “0/5 * * * * ?”)这个注解大家都用过

实现原理:触发器 + 线程池 ==== 任务调度

下面例出几个式子
CRON表达式 含义
“0 0 12 * * ?” 每天中午十二点触发
“0 15 10 ? * *” 每天早上10:15触发
“0 15 10 * * ?” 每天早上10:15触发
“0 15 10 * * ? *” 每天早上10:15触发
“0 15 10 * * ? 2005” 2005年的每天早上10:15触发
“0 * 14 * * ?” 每天从下午2点开始到2点59分每分钟一次触发
“0 0/5 14 * * ?” 每天从下午2点开始到2:55分结束每5分钟一次触发
“0 0/5 14,18 * * ?” 每天的下午2点至2:55和6点至6点55分两个时间段内每5分钟一次触发
“0 0-5 14 * * ?” 每天14:00至14:05每分钟一次触发
“0 10,44 14 ? 3 WED” 三月的每周三的14:10和14:44触发
“0 15 10 ? * MON-FRI” 每个周一、周二、周三、周四、周五的10:15触发

传统定时任务存在的问题

1.业务耦合
如果需要修改定时任务时间,就需要重新部署整个应用,将会导致整个应用停滞一段时间

2.单点风险
所有调度任务都在单台服务器上执行,当任务执行节点出现问题时,整个定时任务全部终止

3.资源分配不均衡
随着业务越来越多,相应的定时任务也会增多,单台服务器执行任务的压力会越来越大

分布式环境里, 任务调度的困难及解决思想

对集群机器中配置的任务,只能运行一个(排它处理)

方法1. 锁:
当集群中所有机器都触发时,只有第一个得到锁,可以运行,后面的机器发现任务已运行,则自动取消运行当集群中所有机器都触发时,只有第一个得到锁,可以运行,后面的机器发现任务已运行,则自动取消运行
实现套路:触发器被布置多份,重复触发 ,再用锁只放一个触发出去

方法2. 选举:
触发器被布置多份 ,选举出一个leader有效,其它暂置为无效–zk选举

高可用任务调度原理


特性

1.某节点处理任务其他节点必须阻塞

2.某个节点失败,另外节点顶替

业界的流行的方案框架:


e-job ----- 直接把任务 分摊出去 ---- 每台机器负责哪些任务,分配好
xxl-job— 调度器(任务触发)是中心化部署(管理台),而执行器与业务系统集成(集群)

这里主要介绍下:xxl调度配置

支持 BEAN模式以及GLUE模式
支持 分片广播 & 动态分片(分片:将一个任务分配给不同的机器做)
官方文档:http://www.xuxueli.com/xxl-job/#/

(1)、调度器(控制台)的部署配置:
可以上github去下载源码:https://github.com/xuxueli/xxl-job
a、运行建库脚本

b、项目中配置mysql

c、打包项目jar包,发布
maven打包后,得到admin.jar,上传到服务器,启动:

nohub java -jar admin.jar > log.xxx 2>&1 &

d、打开控制台,登陆后,可查看项目调度情况

(2)、执行器(自己的代码)的配置部署
a、执行器pom引入:

b、配置控制台地址、执行器名称、通信端口等

c、在控制台添加执行器,必须:AppName == 上一步中的appname配置

d、添加完毕后,可发现控制台中,执行器列表中,显示出online机器地址(ip:port),代理控制台已检测到执行器启动了

e、执行器中编写调度任务

f、控制台中添加任务调度:JobHandle,就是上一步中的@JobHandle标签指定的名字

g、可以点击执行,立即运行此任务,测试正确性。后续各增删改操作完全随你心意

分布式任务调度相关介绍相关推荐

  1. 程序如何在两个gpu卡上并行运行_深度学习分布式训练相关介绍 - Part 1 多GPU训练...

    本篇文章主要是对深度学习中运用多GPU进行训练的一些基本的知识点进行的一个梳理 文章中的内容都是经过认真地分析,并且尽量做到有所考证 抛砖引玉,希望可以给大家有更多的启发,并能有所收获 介绍 大多数时 ...

  2. XXL-Job分布式任务调度框架-- 介绍和调度中心的搭建启动1

    一 xxl-job介绍 1.1 xxl-job介绍 xxl-job是轻量级的分布式任务调度框架,目标是开发迅速.简单.清理.易扩展; 老版本是依赖quartz的定时任务触发,在v2.1.0版本开始 移 ...

  3. 阿里分布式数据库服务相关介绍

    TDDL研发淘宝的历史和背景 淘宝DRDS/TDDL是阿里巴巴自主开发的阿里分布式数据库服务.DRDS脱胎于阿里巴巴开源的Cobar分布式数据库引擎,吸收了Cobar核心的Cobar-Proxy源代码 ...

  4. 系列学习分布式任务调度 XXL-JOB 之第 1 篇 —— XXL-JOB 介绍(调度中心、执行器)

    一般来说,我们在 SpringBoot 项目里,如果需要定时处理一件事,我们最常用的做法是:在启动类增加注解 @EnableScheduling 启用任务调度,然后在 task 任务类的某个方法上增加 ...

  5. xxl-job(分布式任务调度平台)的介绍和使用

    xxl-job(分布式任务调度平台)的介绍和使用 1.传统的定时任务 1.1实现方式 1.2缺点分析 2.初识xxl-job 3.xxl-job实战 3.1下拉xxl-job源码 3.2构建本地数据库 ...

  6. 分布式任务调度框架(Temporal)介绍

    分布式任务调度框架基本能力: 任务管理能力(增删改查.执行.定时执行.延时执行.健康监控) 集群管理能力(扩展简单.效率高) 编程能力(运行代码) Web界面管理 目前市面上有很多可用于处理分布式任务 ...

  7. 【分布式任务调度】二、Elastic-Job详细介绍

    Elastic-Job 一.What is elastic-job? Elastic-Job-Lite Elastic-Job-Cloud Elastic-job开发环境要求 Elastic-Job配 ...

  8. 【分布式任务调度】三、XXL-JOB详细介绍

    一.What is XXL-JOB? XXL-JOB是美团点评开源的轻量级分布式任务调度平台: 该项目于2015年11月发布第一个版本1.0,目前最新版本2.2.0: Github:[https:// ...

  9. 【Python】轻量级分布式任务调度系统-RQ

    一 前言       Redis Queue 一款轻量级的P分布式异步任务队列,基于Redis作为broker,将任务存到redis里面,然后在后台执行指定的Job.就目前而言有三套成熟的工具cele ...

  10. HarmonyOS之分布式任务调度开发流程

    一.概述 ① 分布式任务调度 在 HarmonyOS 中,分布式任务调度平台对搭载 HarmonyOS 的多设备构筑的"超级虚拟终端"提供统一的组件管理能力,为应用定义统一的能力基 ...

最新文章

  1. 机器人聊天软件c#_C#制作简易QQ聊天机器人
  2. 惠普z640服务器装系统,顾问文档: HP Z440、Z640 和 Z840 工作站 - 在采用 Broadwell 处理器的系统上安装 HP ZTurbo Quad Pro 后,出现黑屏...
  3. 一位互联网老兵分享,社会化运营案例解析(宜信内部干货)
  4. android 检测字符串是否为合法域名
  5. ios 检测是否联网_秋招|阿里 iOS 五轮面经分享,已收到阿里的意向书
  6. 计算机图形学论文_论图计算
  7. VC++ 6.0(英文正版)安装及其编译注意事项
  8. php soap function,从PHP SoapServer返回PHP数组
  9. Linux 命令(121)—— cal 命令
  10. 7-10 统计字符出现次数 (20 point(s))
  11. ffmpeg处理hikvision平台PS流
  12. 2021年下半年系统集成项目管理工程师下午真题及答案解析
  13. java小数的数据类型_Java的基本数据类型
  14. BASIC语言、FreeBasic语言
  15. 在iPhone/iPad/iPod touch Home主屏幕界面加快捷方式
  16. 相见恨晚,真的很喜欢Udacity
  17. 十大最佳外国Android游戏下载平台
  18. 数据库之查询表product——统计所有库存商品的总价值
  19. 第3周项目1-顺序表的基本运算
  20. Jetson nano/nx通过网线连接电脑实现远程控制

热门文章

  1. java int64 类型_详解 Java 的八大基本类型,写得非常好!
  2. C语言编程之一个最优美的图案
  3. 如何把手变成手控_女生的手怎样变好看?
  4. Oracle身份证校验函数
  5. T440s 黑苹果折腾
  6. 直流电机/步进电机/舵机区别
  7. 价格操控:大数据“杀熟”和算法合谋
  8. c语言abs和fabs的区别,c语言中abs()和fabs()的区别点整理
  9. lsb隐写的基本方法matlab,GitHub - RGNil/RG_LSB: 利用python实现LSB隐写算法(我自己改进了LSB算法),并进行了性能分析(psnr、错误率、鲁棒性)...
  10. ir2104s的自举电容_一文看懂ir2110自举电容的选择 - 全文