首页 > 编程知识 正文

分布式下的定时任务如何保证,java分布式定时任务

时间:2023-05-06 09:32:43 阅读:13065 作者:521

分布式调度任务是将分布式、不可靠的调度任务集成到统一的平台中,实现集群管理调度和分布式部署的调度任务管理方法。 称为分布式定时任务。

常见的开源方案elastic-job,xxl-job、quartz、saturn、opencron、antares

elastic-job elastic-job是当当网基于quartz二次开发后的分布式调度解决方案,是两个相对独立的子项目Elastic-Job-Lite和elastic-jo

Elastic-Job-Lite被定位为轻量级、非中心解决方案,以jar包的形式提供分布式任务协调服务。

Elastic-Job-Cloud使用Mesosdocker(TBD )解决方案添加资源管理、APP应用程序分发和流程隔离等服务。

突出显示:

它基于quartz时间任务框架,因此具有quartz的大多数功能

使用zookeeper进行调整、调度中心,重量更轻

支持任务的瓷砖

可灵活扩展,可水平扩展。 当任务再次运行时,将检查当前服务的数量,重新划分分片,并在分片结束后继续执行任务

一旦故障转移、容错处理、一台调度程序服务器宕机或与zookeeper断开连接,它将立即停止作业,并查找其他可用的调度程序服务器以执行其馀任务

为管理工作和注册中心提供运输界面。

elastic-job结合了quartz非常好的调度功能,利用ZooKeeper提供了灵活的分片策略。 此外,它还具有实用的监控和管理功能,以及开源社区活跃、文档齐全、代码优雅等诸多优点,推荐用于分布式任务调度框架。

由于elastic-job-lite不支持动态添加活动,因此此处仅粘贴elastic-job-Cloud模式映射

xxl-job是一个个人开源轻量级分布式任务调度框架,主要分为调度中心和执行器两部分。 调度中心在开始初始化时,默认情况下生成执行器的RPC代理对象(http协议),执行器项目启动后,调度中心启动计时器,然后jobHandle 核心功能与elastic-job大致相同。 同时比较技术文件

系统体系结构图:

quartz quartz的常见集群方案如下: 通过在数据库中配置计时器信息,可以确保在数据库被悲观锁定的情况下,同一任务始终只运行一个节点。

好处:

如果保证节点的高可用性(HA ),并且在某个时间点锁定,其他节点可以名列前茅

缺点:

同一任务只能由一个节点执行,其他节点不执行任务,性能低,浪费资源

在遇到大量的短任务时,每个节点经常竞争数据库锁,节点越多,这种情况就越严重。 性能下降

quartz分布只能解决群集的高可用性问题,不能解决任务片问题,不能实现水平扩展

Saturn Saturn是github上开源唯品会的分布式任务调度产品。 基于elastic-job 1.0版开发,改进了一些功能,并添加了新的功能。

突出显示:

支持python、Go、shell、Java和Php的多语言开发。

进一步完善了管理控制台和数据的统计分析

缺点:

技术文件较少,该框架是2016年唯品会研发团队基于elastic-job开发的

opencron是一个功能齐全、真正通用的linux调度系统,可应对各种情况下的各种复杂调度,同时集成linux实时监控、webssh,便于管理调度任务

缺点:只支持技能任务、现场执行、任务执行状态查询等,主要功能侧重于任务修改和查询。 不能动态添加任务和任务片。

antares的优点:

一个任务只安排在服务器群集中的一个节点上。 调度机制基于成熟的quartz并行运行,用户可以通过预切片任务来有效提高任务的执行效率,提高故障转移的灵活性。 执行任务时,可以动态向计算机添加友好管理控制台的缺点。

不能动态添加任务。 只能在控制台上触发任务。 暂停、删除等操作文档不多。 开源社区活跃的系统架构图如下。

在这里,我们将比较几种典型的开源产品

功能

四轴飞行器

elastic-job-cloud

xxl-job

安塔利亚

开放克隆

依赖mysqljdk1.7、zookeeper 3.4。

6+ ,maven3.0.4+ ,mesosmysql ,jdk1.7+ , maven3.0+jdk 1.7+ , redis , zookeeperjdk1.7+ , Tomcat8.0+HA多节点部署,通过竞争数据库锁来保证只有一个节点执行任务通过zookeeper的注册与发现,可以动态的添加服务器。 支持水平扩容集群部署集群部署—任务分片—支持支持支持—文档完善完善完善完善文档略少文档略少管理界面无支持支持支持支持难易程度简单较复杂简单一般一般公司OpenSymphony当当网个人个人个人高级功能—弹性扩容,多种作业模式,失效转移,运行状态收集,多线程处理数据,幂等性,容错处理,spring命名空间支持弹性扩容,分片广播,故障转移,Rolling实时日志,GLUE(支持在线编辑代码,免发布),任务进度监控,任务依赖,数据加密,邮件报警,运行报表,国际化任务分片, 失效转移,弹性扩容 ,时间规则支持quartz和crontab ,kill任务, 现场执行,查询任务运行状态缺点没有管理界面,以及不支持任务分片等。不适用于分布式场景需要引入zookeeper , mesos, 增加系统复杂度, 学习成本较高调度中心通过获取 DB锁来保证集群中执行任务的唯一性, 如果短任务很多,随着调度中心集群数量增加,那么数据库的锁竞争会比较厉害,性能不好。不支持动态添加任务不适用于分布式场景使用企业大众化产品,对分布式调度要求不高的公司大面积使用36氪,当当网,国美,金柚网,联想,唯品会,亚信,平安,猪八戒大众点评,运满满,优信二手车,拍拍贷——

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。