ITPub博客

首页 > 数据库 > 数据库开发技术 > 【Distributed】分布式任务调度平台

【Distributed】分布式任务调度平台

数据库开发技术 作者:赛博行者 时间:2019-09-18 15:16:32 0 删除 编辑

一、概述

什么是定时任务

  • 定时任务调度(开发) 相当于在某个时间段,进行一些任务操作。定时(在某个时间段进行操作假设2点)任务(需求) 调度(触发)
  • 案例:定时任务调度案例 ,我每天早上需要知道昨天一天的用户活跃量,写一个定时Job,每天早上9点钟,查询昨天UI天用户活月量,在以邮件方式发送到我的邮箱。
  • 定时任务应用场景:数据同步、交易信息、清楚用户信息、定期发送报表数据、活动推送
  • 引出问题:分布式任务调度平台分布式领域中服务器集群的话,如何保证定时Job幂等性

二、Java实现定时任务方式

2.1 Thread

2.2 TimerTask

2.3 ScheduledExecutorService

使用ScheduledExecutorService是从Java
JavaSE5的java.util.concurrent里,做为并发工具类被引进的,这是最理想的定时任务实现方式。

2.4 Quartz

引入maven依赖
任务调度类
启动类
Quartz表达式

三、分布式情况下定时任务会出现哪些问题?

分布式集群的情况下,怎么保证定时任务不被重复执行

  1. 定时任务和业务代码存放在同一个jvm (小项目)
  2. 大型互联网公司定时任务代码执行与业务执行代码服务器都是分开,都是独立的jvm。
  3. 定时任务服务器是否需要考虑高并发?同一时间点执行多个任务间隔场景是不需要,同时场景可能会发生高并发
  4. 如果在高并发的情况下,定时Job宕机之后应该如何处理? (单台节点) 使用心跳检测监控自动重启、补偿机制(每个任务打一个小标记) 定时任务在执行代码的时候中间突然报错了,使用日志记录错误,跳过继续执行,在使用定时JOb扫描日志错误记录,进行补偿信息。定时]ob在执行的时候,导致整个Job异常结束掉,发送邮件通知给运维人员



传统定时任务与分布式定时任务区别
传统定时任务特征:单一(没有集群)

四、分布式定时任务解决方案

  1. 使用zookeeper实现分布式锁 缺点(需要创建临时节点、和事件通知不易于扩展)
  2. 使用配置文件做一个开关 缺点发布后,需要重启,设置一个开启任务的开关,将其中一台服务器中设置为true,代表开启任务,其他的服务器设置为false,此种方式如果设置为true的服务器宕机了,任务就失效了。(不推荐)
  3. 数据库唯一约束,缺点效率低 (不推荐)
  4. 使用分布式任务调度平台 XXLJOB、Elastric-Job、TBSchedule

五、XXLJOB介绍

5.1 分布式任务调度平台能够帮我们实现那些事情

  1. 支持Job集群(前提保证幂等性问题) Job负载均衡轮训机制
  2. 支持Job补偿如果Job执行失败的话,会自动实现重试机制,如果重启多次还是失败的话,发送邮件通知给运维人员。
  3. 支持Job日志记录
  4. 动态配置定时规则传统定时JOb触发规则都是写死,采用动态配置Job规则

5.2 XXLJOB GitHub

XXLJOB项目及文档

XX-JOB
XX-JOB


5.3 原理

  • XXL-Job原理:执行器、任务管理
    • 执行器表达意思:定时Job实际执行的服务地址
    • 任务管表达意思:配置定时任务规则、路由策略、允许模式、等。
步骤
  • ① 部署: xxl-job-admin 作为注册中心
  • ② 创建执行器(具体调度地址) 可以支持集群
  • ③ 配置文件需要填写xxl-job注册中心地址
  • ④ 每个具体执行job服务器需要创建一个netty连接端口号
  • ⑤ 需要执行job的任务类,集成IJobHandler抽象类注册到job容器中
  • ⑥ Execute方法中编写具体job任务

5.4 SpringBoot整合XXLJob

配置文件信息

application.properties

配置XxlJobConfig
创建handler接口

5.5 调度中心集群

  如果xx-job admin 平台挂掉的话,会导致任务无法执行,所以调度中心也需要部署集群,调度中心支持集群部署,提升调度系统容灾和可用性。调度中心集群部署时,几点要求和建议:

  1. DB配置保持一致;
  2. 登陆账号配置保持一致;
  3. 群机器时钟保持一致(单机集群忽视);
  4. 建议:推荐通过nginx为调度中心集群做负载均衡,分配域名。调度中心访问、执行器回调配置、调用API服务等操作均通过该域名进行。

xxl-job集群原理
xxl-job集群原理

Nginx配置信息

转载于:https://www.cnblogs.com/haoworld/p/distributed-fen-bu-shi-ren-wu-diao-du-ping-tai.html

原文作者:diaolin2115;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2019-03-15

  • 博文量
    12
  • 访问量
    94