精华内容
下载资源
问答
  • 注意:命名空间一定是配置定时任务中命名的一致       4. 可以看到相应的作业任务       二 项目中配置定时任务 1.pom添加依赖 <!-- 引入elastic-job-lite springboot核心模块 --> ...

    elasticjob官网:http://elasticjob.io/index_zh.html

    https://blog.csdn.net/a13627210064/article/details/81201800

    https://www.jianshu.com/p/8411504c53a3

    https://blog.csdn.net/yangliuhbhd/article/details/80902212

     

    一 管理平台安装

    1.在github  https://github.com/elasticjob/elastic-job-lite

    上导入项目到本地

     

     2.http://localhost:8899/# 访问默认的端口

     

    3. 注册中心 zk 安装配置上 

    注意:命名空间一定是配置定时任务中命名的一致

     

     

     

    4. 可以看到相应的作业任务 

     

     

    二 项目中配置定时任务

    1.pom添加依赖

    <!-- 引入elastic-job-lite springboot核心模块 -->
            <dependency>
                <groupId>com.github.kuhn-he</groupId>
                <artifactId>elastic-job-lite-spring-boot-starter</artifactId>
                <version>2.1.5</version>
            </dependency>

    2.yml 中配置参数

    elaticjob:
      zookeeper:
        server-lists: localhost:2181
        namespace: my-project-name

     

    3.建一个任务类 LateInfoTask

    @Slf4j
    @Component
    //springboot整合主要就是注解了。这里指定一下相关配偶。服务链接到zk上。 控制台配置之后就看得到啦,之后也可以在控制台上手动修改一些相关配置
    @ElasticSimpleJob(cron = "0/3 * * * * ? *", jobName = "lateInfoTask", shardingTotalCount = 2, jobParameter = "测试参数", shardingItemParameters = "0=A,1=B")
    
    public class LateInfoTask implements SimpleJob {
    
        @Autowired
        private UserService userService;
    
    
        @Override
        public void execute(ShardingContext shardingContext) {
            List<User> allUser = userService.findAllUser(1, 10);
            for (User user : allUser) {
                log.info("对象:{}", user);
            }
    
            System.out.println(new Date() + " job名称 = " + shardingContext.getJobName()
                    + "分片数量" + shardingContext.getShardingTotalCount()
                    + "当前分区" + shardingContext.getShardingItem()
                    + "当前分区名称" + shardingContext.getShardingParameter()
                    + "当前自定义参数" + shardingContext.getJobParameter() + "============start=================");
    
    //        原文:https://blog.csdn.net/u013018994/article/details/76212229
    
        }
    }

     

     
     

     

    后期整理 cloud 相关的 job .......

    转载于:https://www.cnblogs.com/qinls/p/10478833.html

    展开全文
  • 分布式定时任务对比

    万次阅读 多人点赞 2018-03-07 14:42:26
    1. 什么是分布式定时任务 把分散的,可靠性差的计划任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式。叫做分布式定时任务。 2. 常见开源方案  elastic-job , xxl-job ,quartz ,...

    1. 什么是分布式定时任务

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

    2. 常见开源方案

     elastic-job xxl-job ,quartz , saturn,  opencron , antares

     

     elastic-job

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

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

    Elastic-Job-Cloud使用Mesos + Docker(TBD)的解决方案,额外提供资源治理、应用分发以及进程隔离等服务

    亮点:

    1. 基于quartz 定时任务框架为基础的,因此具备quartz的大部分功能

    2. 使用zookeeper做协调,调度中心,更加轻量级

    3. 支持任务的分片

    4. 支持弹性扩容 , 可以水平扩展 , 当任务再次运行时,会检查当前的服务器数量,重新分片,分片结束之后才会继续执行任务

    5. 失效转移,容错处理,当一台调度服务器宕机或者跟zookeeper断开连接之后,会立即停止作业,然后再去寻找其他空闲的调度服务器,来运行剩余的任务

    6. 提供运维界面,可以管理作业和注册中心。

    elastic-job结合了quartz非常优秀的时间调度功能,并且利用ZooKeeper实现了灵活的分片策略。除此之外,还加入了大量实用的监控和管理功能,

    以及其开源社区活跃、文档齐全、代码优雅等优点,是分布式任务调度框架的推荐选择。

    由于elastic-job-lite  不支持动态添加作业,此处仅贴上elastic-job-Cloud架构图

     

    xxl-job

    由个人开源的一个轻量级分布式任务调度框架 ,主要分为 调度中心和执行器两部分 , 调度中心在启动初始化的时候,会默认生成执行器的RPC代理

    对象(http协议调用), 执行器项目启动之后, 调度中心在触发定时器之后通过jobHandle 来调用执行器项目里面的代码,核心功能和elastic-job差不多

    ,同时技术文档比较完善

    系统架构图:

     

     quartz

    quartz 的常见集群方案如下,通过在数据库中配置定时器信息, 以数据库悲观锁的方式达到同一个任务始终只有一个节点在运行,

     

    优点:

    1. 保证节点高可用 (HA), 如果某一个几点挂了, 其他节点可以顶上

    缺点:

    1. 同一个任务只能有一个节点运行,其他节点将不执行任务,性能低,资源浪费

    2. 当碰到大量短任务时,各个节点频繁的竞争数据库锁,节点越多这种情况越严重。性能会很低下

    3. quartz 的分布式仅解决了集群高可用的问题,并没有解决任务分片的问题,不能实现水平扩展

     

     Saturn

     Saturn是唯品会在github开源的一款分布式任务调度产品。它是基于当当elastic-job 1.0版本来开发的,其上完善了一些功能和添加了一些新的feature。

     亮点:

    1. 支持多语言开发 python、Go、Shell、Java、Php。

    2. 管理控制台和数据统计分析更加完善

     缺点:

    1. 技术文档较少 , 该框架是2016年由唯品会的研发团队基于elastic-job开发而来的

     

     

    opencron 

    一个功能完善真正通用的linux定时任务调度定系统,满足多种场景下各种复杂的定时任务调度,同时集成了linux实时监控,webssh,提供一个方便管理定时任务的平台

     

    缺点:仅支持  kill任务, 现场执行,查询任务运行状态 等, 主要功能是着重于任务的修改和查询上。 不能动态的添加任务以及任务分片。

     

    antares

    优点:

    1. 一个任务仅会被服务器集群中的某个节点调度,调度机制基于成熟的 quartz
    2. 并行执行 , 用户可通过对任务预分片,有效提升任务执行效率
    3. 失效转移
    4. 弹性扩容,在任务运行时,可以动态的加机器
    5. 友好的管理控制台

    缺点:

    1. 不能动态的添加任务,仅能在控制台对任务进行触发,暂停,删除等操作
    2. 文档不多,开源社区不够活跃

    系统架构图如下: 

     

    4. 比较

    此处列出了几个代表性的开源产品

    feature

    quartz

    elastic-job-cloud

    xxl-job

    antares

    opencron

    依赖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氪,当当网,国美,金柚网,联想,唯品会,亚信,平安,猪八戒大众点评,运满满,优信二手车,拍拍贷

     

    sharedCode源码交流群,欢迎喜欢阅读源码的朋友加群,添加下面的微信, 备注”加群“ 。 

    展开全文
  • 分布式定时任务调度

    2019-10-29 11:11:57
    什么是分布式定时任务? 把分散的,可靠性差的计划任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式。叫做分布式定时任务。 为什么要采用分布式定时任务? 单点定时任务的缺点: ...

    前言

    什么是分布式定时任务?

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

    为什么要采用分布式定时任务?

    单点定时任务的缺点:

    • 功能相对简单,交互性差,任务部署效率低,开发和维护成本比较高,不能很好的满足各系统定时任务的管理和控制,尤其在多系统的环境下更加明显;
    • 许多任务都是单机部署,可用性差;
    • 任务跟踪和告警难以实现。

    分布式定时任务的优势:

    • 通过集群的方式进行管理调度,大大降低了开发和维护成本;
    • 分布式部署,保证了系统的高可用性,伸缩性,负载均衡,提高了容错;
    • 可以通过控制台部署和管理定时任务,方便灵活高效;
    • 任务都可以持久化到数据库,避免了宕机和数据丢失带来的隐患,同时有完善的任务失败重做机制和详细的任务跟踪及告警策略。

    1 基础框架Quartz和其设计方案

    1.1 quartz

    quartz 集群中每个节点都是一个单独的Quartz应用,它又管理着其他的节点。这个集群需要每个节点单独的启动或停止;和我们的应用服务器集群不同,独立的quartz 节点之间是不需要 通信的。不同节点之间是通过数据库表来感知另一个应用。只有使用持久的JobStore才能完成quartz 集群。

    • Job:表示一个工作,要执行的具体内容。此接口中只有一个方法
      void execute(JobExecutionContext context)
    • JobDetail:表示一个具体的可执行的调度程序,Job是这个可执行程调度程序所要执行的内容,另外JobDetail还包含了这个任务调度的方案和策略。
    • Trigger代表一个调度参数的配置,什么时候去调用。
    • Scheduler代表一个调度容器,一个调度容器中可以注册多个JobDetail和Trigger。当Trigger与JobDetail组合,就可以被Scheduler容器调度了。

    上图三个节点在数据库中都拥有同一份Job定义,如果某一个节点失效,那么Job会在其他节点上执行。由于三个节点上的Job执行代码是一样的,那么怎么保证只有在一台机器上触发呢?

    答案是使用了数据库锁。在quartz的集群解决方案里有张表scheduler_locks,quartz采用了悲观锁的方式对triggers表进行行加锁,以保证任务同步的正确性。一旦某一个节点上面的线程获取了该锁,那么这个Job就会在这台机器上被执行,同时这个锁就会被这台机器占用。同时另外一台机器也会想要触发这个任务,但是锁已经被占用了,就只能等待,直到这个锁被释放。之后会看trigger状态,如果已经被执行了,则不会执行了。

    优点:

    保证节点高可用 (HA), 如果某一个几点挂了, 其他节点可以顶上

    缺点:

    • 同一个任务只能有一个节点运行,其他节点将不执行任务,性能低,资源浪费
    • 当碰到大量短任务时,各个节点频繁的竞争数据库锁,节点越多这种情况越严重,造成性能会很低下
    • quartz 的分布式仅解决了集群高可用的问题,并没有解决任务分片的问题,不能实现水平扩展,还是会有单机处理的极限

    1.2 方案

    1.2.1 分时方案

    严格划分时间片,交替运行计划任务,当主系统宕机后,备用系统仍然工作,但是处理初期被拉长了。

    缺点:周期延长了。

    fdf

    1.2.2 HA高可用方案

    正常情况下主系统工作,备用系统守候,心跳检测发现主系统出现故障备用系统启动。

    缺点:单一系统,不能做负载均衡,只能垂直扩展,也就是硬件层面的升级,无法做水平扩展。

    1.2.3 多路心跳方案

    采用多路心跳,做服务级,进程级的,IP和端口级别的心跳检测,正常情况是主系统工作,备用系统守候,心跳检测主系统出现故障,备用系统启动,当再次检测到主系统工作,则将执行权交回主系统。

    缺点:开发比较复杂,程序健壮性要求高。

    1.2.4 任务抢占方案

    A,B两台服务器同时工作,启动需要存在一前一后,谁先启动谁率先加锁,其他服务器只能等待,他们同时对互斥锁进行监控,一旦发现锁被释放,其他服务那个先抢到,那个运行,运行前加排他锁。

    优点:可以进一步实现多服务器横向扩展。

    缺点:开发复杂,程序健壮性要求高,有时候会出现不释放锁的问题。

    img

    1.2.5 任务轮询或任务轮询+抢占排队方案

    每个服务器首次启动时加入队列;

    每次任务运行首先判断自己是否是当前可运行任务,如果是便运行;

    如果不是当前运行的任务,检查自己是否在队列中,如果在,便推出,如果不在队列中,便键入队列。

    img

    通过以上这些方案,可以看出1.3和1.5的方案才是优先选择的,扩展性好,开发复杂度不是很高。那么这种方案需要的需要的技术原理是什么呢,那就是分布式互斥锁和队列。

    2 分布式定时任务调度框架

    2.1 elastic-job

    elastic-job 是由当当网基于quartz 二次开发之后的分布式调度解决方案 , 它主要的设计理念是无中心化的分布式定时调度框架,思路来源于Quartz的基于数据库的高可用方案。但数据库没有分布式协调功能,所以在高可用方案的基础上增加了弹性扩容和数据分片的思路,以便于更大限度的利用分布式服务器的资源。

    elastic-job由两个相对独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成 。

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

    Elastic-Job-Cloud使用Mesos + Docker(TBD)的解决方案,额外提供资源治理、应用分发以及进程隔离等服。

    • 分片概念:任务的分布式执行,需要将一个任务拆分为多个独立的任务项,然后由分布式的服务器分别执行某一个或几个分片项。
    • 中心化和去中心化的区别:在实现难度上中心化非常高,只能实现一个调度中心,而且调度中心和作业执行的服务器之间要进行通信。而去中心化的话,实现难度比较低,没有一个中心,各个作业节点是自治的,不需要分布式的调度。第二个,部署难度,中心化稍微高一些,有一个调度中心,服务器还有一个注册中心。

    去中心化有两种,一个是作业执行服务器,还有一个注册中心。触发时间统一控制,中心化是可以的,去中心化差一些,作业服务器执行的时间本身不一样的怎么办,有的公司没有问题,作业乱掉时用中心化,用各个服务器去分发调度。去中心化,每个中心都是根据自己的时钟进行作业,这是很难控制的。

    特点

    • 定时任务:基于成熟的定时任务作业框架Quartz cron表达式执行定时任务;
    • 作业注册中心:基于Zookeeper实现全局作业注册控制中心。用于注册,控制和协调分布式作业执行。
    • 作业分片:将要给任务分片成多个小任务项到多服务器上同时执行;
    • 弹性扩容缩容:运行中的作业服务器崩溃,或新增N台作业服务器,作业框架将在下次作业执行前重新分片,不影响当前作业执行;

    任务监控和管理界面:Elastic-Job-Lite-Console。它和Elastic-Job-Lite是两个完全不关联的应用程序,使用ZooKeeper来交换数据,管理人员可以通过这个界面查看、监控和管理Elastic-Job-Lite的任务,必要的时候还能手动触发任务。

    官方文档:http://elasticjob.io/docs/elastic-job-lite/00-overview/

    2.2 xxl-job

    许雪里个人开源的一个轻量级分布式任务调度框架 ,主要分为 调度中心和执行器两部分 , 调度中心在启动初始化的时候,会默认生成执行器的RPC代理。对象(http协议调用), 执行器项目启动之后, 调度中心在触发定时器之后通过jobHandle 来调用执行器项目里面的代码,核心功能和elastic-job差不多,同时技术文档比较完善。

    设计思想:

    将调度行为抽象形成“调度中心”公共平台,而平台自身并不承担业务逻辑,“调度中心”负责发起调度请求。将任务抽象成分散的JobHandler,交由“执行器”统一管理,“执行器”负责接收调度请求并执行对应的JobHandler中业务逻辑。因此,“调度”和“任务”两部分可以相互解耦,提高系统整体稳定性和扩展性。

    系统架构图:

    系统组成:

    • 调度模块(调度中心): 负责管理调度信息,按照调度配置发出调度请求,自身不承担业务代码。调度系统与任务解耦,提高了系统可用性和稳定性,同时调度系统性能不再受限于任务模块; 支持可视化、简单且动态的管理调度信息,包括任务新建,更新,删除,GLUE开发和任务报警等,所有上述操作都会实时生效,同时支持监控调度结果以及执行日志,支持执行器Failover。
    • 执行模块(执行器): 负责接收调度请求并执行任务逻辑。任务模块专注于任务的执行等操作,开发和维护更加简单和高效; 接收“调度中心”的执行请求、终止请求和日志请求等。

    与quartz对比:

    1. 有任务管理界面,操作人性化
    2. 调度逻辑和QuartzJobBean任务解耦,quartz是耦合在同一个项目中的,调度任务数量逐渐增多,调度任务逻辑逐渐加重的情况下,调用系统的性能将大大受限于业务。
    3. quartz底层以“抢占式”获取DB锁并由抢占成功节点负责运行任务,会导致节点负载悬殊非常大;而XXL-JOB通过执行器实现“协同分配式”运行任务,充分发挥集群优势,负载各节点均衡。
    4. 支持多种模式的定时任务, GLUE模式(Shell) + GLUE模式(Python) + GLUE模式(NodeJS)

    官方文档:http://www.xuxueli.com/xxl-job/#/?id=%E3%80%8A%E5%88%86%E5%B8%83%E5%BC%8F%E4%BB%BB%E5%8A%A1%E8%B0%83%E5%BA%A6%E5%B9%B3%E5%8F%B0xxl-job%E3%80%8B

    2.3 对比

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

    参考文档:

    https://www.jianshu.com/p/ab438d944669

    https://blog.csdn.net/u012394095/article/details/79470904

    https://www.jianshu.com/p/3da5ef692a04

    展开全文
  • 分布式定时任务

    2020-04-18 18:22:21
    1. 什么是分布式定时任务 2. 常见开源方案 elastic-job xxl-job quartz Saturn opencron antares 3. 比较 1. 什么是分布式定时任务 把分散的,可靠性...
    • 1. 什么是分布式定时任务

    • 2. 常见开源方案

      • elastic-job

      • xxl-job

      • quartz

      • Saturn

      • opencron

      • antares

    • 3. 比较


    1. 什么是分布式定时任务

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

    2. 常见开源方案

    • elastic-job

    • xxl-job

    • quartz

    • saturn

    • opencron

    • antares

    elastic-job

    elastic-job 是由当当网基于quartz 二次开发之后的分布式调度解决方案 , 由两个相对独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成 。Elastic-Job-Lite定位为轻量级无中心化解决方案,使用jar包的形式提供分布式任务的协调服务。Elastic-Job-Cloud使用Mesos + Docker(TBD)的解决方案,额外提供资源治理、应用分发以及进程隔离等服务亮点:

    1. 基于quartz 定时任务框架为基础的,因此具备quartz的大部分功能

    2. 使用zookeeper做协调,调度中心,更加轻量级

    3. 支持任务的分片

    4. 支持弹性扩容 , 可以水平扩展 , 当任务再次运行时,会检查当前的服务器数量,重新分片,分片结束之后才会继续执行任务

    5. 失效转移,容错处理,当一台调度服务器宕机或者跟zookeeper断开连接之后,会立即停止作业,然后再去寻找其他空闲的调度服务器,来运行剩余的任务

    6. 提供运维界面,可以管理作业和注册中心。

    elastic-job结合了quartz非常优秀的时间调度功能,并且利用ZooKeeper实现了灵活的分片策略。除此之外,还加入了大量实用的监控和管理功能,以及其开源社区活跃、文档齐全、代码优雅等优点,是分布式任务调度框架的推荐选择。由于elastic-job-lite 不支持动态添加作业,此处仅贴上elastic-job-Cloud架构图

    xxl-job

    由个人开源的一个轻量级分布式任务调度框架 ,主要分为 调度中心和执行器两部分 , 调度中心在启动初始化的时候,会默认生成执行器的RPC代理对象(http协议调用), 执行器项目启动之后, 调度中心在触发定时器之后通过jobHandle 来调用执行器项目里面的代码,核心功能和elastic-job差不多,同时技术文档比较完善系统架构图:

    quartz

    quartz 的常见集群方案如下,通过在数据库中配置定时器信息, 以数据库悲观锁的方式达到同一个任务始终只有一个节点在运行,优点:

    1. 保证节点高可用 (HA), 如果某一个几点挂了, 其他节点可以顶上

    缺点:

    1. 同一个任务只能有一个节点运行,其他节点将不执行任务,性能低,资源浪费

    2. 当碰到大量短任务时,各个节点频繁的竞争数据库锁,节点越多这种情况越严重。性能会很低下

    3. quartz 的分布式仅解决了集群高可用的问题,并没有解决任务分片的问题,不能实现水平扩展

    Saturn

    Saturn是唯品会在github开源的一款分布式任务调度产品。它是基于当当elastic-job 1.0版本来开发的,其上完善了一些功能和添加了一些新的feature。亮点:

    1. 支持多语言开发 python、Go、Shell、Java、Php。

    2. 管理控制台和数据统计分析更加完善

    缺点:

    1. 技术文档较少 , 该框架是2016年由唯品会的研发团队基于elastic-job开发而来的

    opencron

    一个功能完善真正通用的linux定时任务调度定系统,满足多种场景下各种复杂的定时任务调度,同时集成了linux实时监控,webssh,提供一个方便管理定时任务的平台缺点:仅支持 kill任务, 现场执行,查询任务运行状态 等, 主要功能是着重于任务的修改和查询上。不能动态的添加任务以及任务分片。

    antares

    优点:

    1. 一个任务仅会被服务器集群中的某个节点调度,调度机制基于成熟的 quartz

    2. 并行执行 , 用户可通过对任务预分片,有效提升任务执行效率

    3. 失效转移

    4. 弹性扩容,在任务运行时,可以动态的加机器

    5. 友好的管理控制台

    缺点:

    1. 不能动态的添加任务,仅能在控制台对任务进行触发,暂停,删除等操作

    2. 文档不多,开源社区不够活跃

    系统架构图如下:

    3. 比较

    此处列出了几个代表性的开源产品

    featurequartzelastic-job-cloudxxl-jobantaresopencron
    依赖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氪,当当网,国美,金柚网,联想,唯品会,亚信,平安,猪八戒大众点评,运满满,优信二手车,拍拍贷

    来源:https://ithut.top/detail?id=66

    展开全文
  • 1. 什么是分布式定时任务 把分散的,可靠性差的计划任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式。叫做分布式定时任务。 2. 常见开源方案 elastic-job xxl-job ...
  • 分布式定时任务解决方案

    千次阅读 2019-11-06 21:06:45
    分布式定时任务解决方案 一、背景 服务有定时任务,当服务部署到多个节点时,每个节点在同一个时间点都会执行相同的定时任务,需要做的是,让同一个时间点,每一个定时任务只在一个节点上执行,避免重复执行。 二、 ...
  • 分布式定时任务选型

    2020-07-13 15:07:06
    分布式定时任务 把分散的,可靠性差的计划任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式。 常见开源方案 elastic-job , xxl-job ,quartz , saturn, opencron , antares elastic...
  • 在互联网应用中,各式各样的定时任务存于系统各个角落。我们希望由一个平台统一将这些作业管理起来。通过这个系统,作业的宕机、崩溃等状态就可收入运维...什么是分布式定时任务中间件最大限度的减少人工干预不仅是...
  • 上篇博客,使用xxl-job分布式定时任务框架简单实现了一个demo实例,而java实现分布式定时任务远不止这一个框架,所以,本篇博客的主要内容是将java的几个分布式定时任务框架做个对比总结。 【框架列举】 单机 timer...
  • 1. 什么是分布式定时任务 把分散的,可靠性差的计划任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式。叫做分布式定时任务。 2. 常见开源方案 elastic-job xxl-job ...
  • 分布式定时任务对比。
  • E-Job 分布式调度2.1 使用场景2.2 springboot工程,引入依赖2.3 配置文件2.4 开启E-Job2.5 创建ElasticService2.6 创建定时任务监听2.7 创建定时任务异常处理类2.8 创建定时任务2.9 启动zookeeper,再使用8081端口...
  • 1、为什么需要定时任务 2、定时任务调度框架 2.1 单机 2.2 分布 3、xxl-job和elastic-job对比 3.1 支持集群部署方式 3.2 多节点部署任务执行方式 3.3 日志可追溯 3.4 监控告警 3.5 弹性扩容缩容 3.6 支持...
  • 作者 | sharedCode来源 | blog.csdn.net/u012394095/article/details/79470904分布式定时任务简介 把分散的,可靠性差的计划任务...
  •   在分布式环境下,传统的一些技术会失败,比如传统的 synchronized 或者 lock 锁,以及创建数据库的事务,无法保证ACID,还有定时任务也可能会出现重复执行的问题。   分布式锁。Zookeeper 实现分布式锁。   ...
  • 分布式定时任务对比 - sharedCode源码交流 - CSDN博客 https://blog.csdn.net/u012394095/article/details/79470904 分布式定时任务对比 1. 什么是分布式定时任务 把分散的,可靠性差的计划任务纳入统一的...
  • 1. 什么是分布式定时任务2. 常见开源方案elastic-jobxxl-jobquartzSaturnopencronantares3. 比较《Java 2019 超神之路》《Dubbo 实现原理与源码解析 —— 精品合集》《Spring 实现原理与源码解析 —— 精品合集》...
  • 前面的章节,用户通过绑定手机号的注册为会员,并可以补充完个人信息,比如姓名、生日等信息,拿到用户的生日信息之后,就可以通过会员生日信息进行营销,此处就涉及到定时任务执行营销信息推送的问题。本篇就带你...
  • 分布式定时任务调度框架选型 背景 业务场景 定期执行任务:如每天0点做资源稽查; 需求和痛点 集群部署服务时,如何确保任务不被重复执行?---最急迫 如何监控、告警等; 高可用、无单点故障; 优秀的并行处理...
  • 当当(Elastic-job)分布式定时任务

    千次阅读 2018-09-19 11:38:38
     Elastic-job解决以下问题,我们开发定时任务一般都是使用quartz或者spring-task(ScheduledExecutorService),无论是使用quartz还是spring-task,我们都会至少遇到两个痛点: 不敢轻易跟着应用服务多节点部署,...
  • 什么是分布式定时任务? 把分散的,可靠性差的计划任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式,就叫做分布式定时任务。 它有两层含义: 它是运行在分布式集群环境下的调度任务,...
  • 分布式定时任务】 首先,我们要了解计划任务这个概念,计划任务是指由计划的定时运行或者周期性运行的程序。我们最常见的就是Linux的‘crontab’和Windows的‘计划任务’。 那么什么是分布式定时任务,个人总结为...
  • 分布式定时任务对比 - sharedCode源码交流 - CSDN博客 https://blog.csdn.net/u012394095/article/details/79470904   分布式定时任务对比   1. 什么是分布式定时任务 把分散的,可靠性差的计划任务纳入统一...
  • 分布式定时任务简介 把分散的,可靠性差的计划任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式,叫做分布式定时任务。 常见开源方案 elastic-job xxl-job quartz saturn opencron ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 964
精华内容 385
关键字:

当当网分布式定时任务