zoukankan      html  css  js  c++  java
  • 分布式定时任务

       由于项目原因,需要使用分布式定时任务。目前可以使用的定时任务框架包括:

       A)Quartz:Java事实上的定时任务标准。但Quartz关注点在于定时任务而非数据,并无一套根据数据处理而定制化的流程。虽然Quartz可以基于数据库实现作业的高可用,但缺少分布式并行调度的功能。

       B)TBSchedule:阿里早期开源的分布式任务调度系统。代码略陈旧,使用timer而非线程池执行任务调度。众所周知,timer在处理异常状况时是有缺陷的。而且TBSchedule作业类型较为单一,只能是获取/处理数据一种模式。还有就是文档缺失比较严重。

      C)Crontab:Linux系统级的定时任务执行器。缺乏分布式和集中管理功能。

    综上所述,当前存在的作业系统缺少分布式、并行调度、弹性扩容缩容、集中管理、定制化流程型任务等功能,所以需要一个新的作业系统完善这些功能。

    当当近期开源了分布式作业调度框架elastic-job项目项目开源地址:https://github.com/dangdangdotcom/elastic-job

    elastic-job可以从下面的几个类开始入手:

     JobScheduler:作业调度器,简单说就是进行作业调度的管理容器。里面会管理作业的基本配置,注册,选举,分片,失效转移等核心逻辑实现;

     ListenerManager:监听管理,对作业的各种状态进行监听,包括选举,分片,失效,操作,配置变更等事件监听,触发相应的执行逻辑;

     AbstractElasticJob:作业的基类,目前作业分为3种,简单类型,流式作业,流式顺序作业。

     关于elastic-job的详情说明请参见:http://www.chinacloud.cn/show.aspx?id=22237&cid=16

     http://www.infoq.com/cn/articles/dangdang-distributed-work-framework-elastic-job

  • 相关阅读:
    前端笔记7
    前端笔记6
    列表、行块元素
    我的学习方法(5)
    (读后摘抄)《计算机程序设计语言的发展》_王汝传
    电影《比利·林恩的中场战事》
    关于优化(1)
    Debug技巧(1)
    奇奇怪怪的东西(1)
    我的学习方法(4)
  • 原文地址:https://www.cnblogs.com/moonandstar08/p/5751253.html
Copyright © 2011-2022 走看看