开源分布式任务调度平台Cuckoo-Schedule

1         概述

1.1      平台概述

  Cuckoo-Schedule是基于Quartz-Schedule的轻量级任务调度框架,具有易学习、易上手、开发高效稳定的特点。Demo地址:http://cuckoo.hellosr.com,测试用户:guest,密码:123456。

  Cuckoo-Schedule对调度模块与执行模块进行解耦,调度模块支持集部署、任务分组、任务依赖、权限管理、邮件告警、调度日志记录等功能,并提供WEB页面对任务进行管理,支持任务实时调度情况的查看、变更以及任务手动执行回溯、暂停等管理功能。执行模块支持客户端切面、脚本代码,实现客户端任务的零代码侵入。

 

 

1.2      功能介绍

l  调度集群

  Cuckoo-Schedule的分布式策略是以数据库作为边界资源的并发策略,每个集群节点遵守相同的调度规范,集群节点可动态扩容、删除。

l  任务依赖

  Cuckoo-Schedule支持任务的依赖于触发,从而使得任务执行有先后顺序。任务可以定时触发,也可以通过上级任务触发。同时一个任务的执行可以依赖多个任务的完成状态。

l  任务分类

  Cuckoo-Schedule既可以支持日切任务(每日执行任务),有可以支持数据流任务(按时间间隔执行),日切任务依赖组执行的日切业务时间在执行时保持一致,数据流任务依赖住执行的数据开始时间戳和结束时间戳保持一致。

例如:

  有任务A/B/C任务,如果依赖组是日切任务,那么这三个任务有相同的业务执行日期。如果依赖组是数据流任务,那么这三个任务有相同的开始时间戳和结束时间戳。

l  任务分片

  针对数据量超大的任务,需要制定分片策略,将任务拆解成多个小任务通过不同的客户端执行,达到提供任务调度速率的目标。Cuckoo-Schedule可以针对任务层级设置任务执行参数,作为参数传递给客户端并进行任务分片执行。

l  任务执行查看

  Cuckoo-Schedule支持任务执行日志情况查看,也支持任务执行依赖关系执行情况查看,便于任务执行异常情况下排查问题原因。

l  任务重跑

  当任务执行失败后,支持手工对任务进行重跑操作,重跑是可以选择是否执行触发任务。

l  任务暂停

  当客户端某个系统需要上线或者重启操作时,可以通过控制台手工暂停客户端任务的调度,避免由于服务重启的情况下,造成任务失败。

l  任务告警

  由于客户端系统上线、服务宕机、网络波动等问题会造成任务执行过程中的中断、超时等情况,Cuckoo-Schedule可以设置告警邮件接收列表,以及任务层级设定告警超时提醒时间。

l  任务配置

  任务配置支持管理界面进行配置,也支持通过SQL的形式将任务导入。通过这两种方式,可以做到,在开发环境通过页面配置任务,在测试与线上环境是,通过将开发环境配置好的SQL导入到系统中。保证各个环境任务一直,避免人工操作造成的不一致情况发生。

l  客户端分类

  客户端通过appName区分不同的客户端类型,不同的定时任务由不同类型的客户端执行。有助于在微(多)服务架构中,各个服务执行自己的任务。

l  客户端切面

  在支持Spring的客户端服务中,可以通过引入Cuckoo-Client配置,通过注解的形式织入Cuckoo任务调度逻辑,开发简单易上手。

l  客户端脚本任务

  Cuckoo-Schedule支持执行各类脚本,例如:shell、python、node、perl、curl等

 

2         快速搭建

2.1      下载

  GitHub地址:https://github.com/suyin58/cuckoo-schedule

  QQ群讨论组:639066328 

2.2      工程搭建

2.2.1      数据库配置

  工程下载完成后,依次执行工程目录下的《00.quartz-core.sql》、《01.cuckoo-shcedule.sql》、《02.data-for-test.sql》

2.2.2      服务端搭建(web工程)

  修改resources下service.properties配置文件的数据库连接配置、邮件发送配置,以及cuckoo.server.tcpPort(用于客户端连接)

2.2.3      客户端搭建(web工程)

  修改resources下spring-mvc-context.xml的配置,服务器集群注意server配置为服务器cuckoo.server.tcpPort的值,appName用于区分不同的应用,clientTag用于区分客户端实例。

2.2.4      查看任务调度情况

  启动服务端工程和客户端工程,访问服务端Web服务,查看启动效果

3         模块介绍

3.1      核心调度模块

   

 

       核心调度模块基于Quartz-Schedule进行调度管理,任务的触发有quartz进行触发,任务执行完成后,如果存在下级任务,那么会触发下级任务的执行。

3.2      注册模块

   

 

3.3      通信模块

  服务端和客户端的通信采用mina框架构建TCP消息通信,通过自定义的消息格式对消息进行传递与处理。

3.4      权限管理

  权限管理分为三部分,

  权限角色:管理员(拥有查看执行权限,可以将任务分组权限再次分配给普通用户)、普通用户(仅拥有自己创建的任务分组权限,可以将自己创建的任务权限分配给其他用户)、游客(仅用于演示用:拥有所有分组的查看权限,没有操作和再次分配权限)。

  任务分组:权限的控制维度到分组层级,一个任务分组可以包含多种任务。

  权限分类:分配权限 > 操作权限 > 只读权限。每个用户都任务分组都有不同的权限分类,只读权限,只能查看任务分组、操作权限,可以查看任务分组,并且可以对分组下任务进行增删改查以及重跑调度操作等权限、分配权限可以将任务分组的权限分配给其他用户。

3.5      客户端执行模块

   

 

       上图为Cuckoo任务类型的Spring切面执行方式,仅通过注解的方式,将切面织入到应用层面上即可。如果是Script任务类型,那么客户端会调用Runtime.process的方式执行脚本命令。

    

4         高级功能

4.1      参数传递

  调度模块调用客户端执行模块的时候,会传递如下参数:

Cuckoo任务

  需要注解支持,可以通过方法获得对应的参数

    执行参数:JobInfoBean.getCuckooParallelJobArgs()

    日切任务参数:JobInfoBean.getTxDate()

    非日期任务参数:JobInfoBean.getFlowLastTime();  JobInfoBean.getFlowCurrTime();

客户端脚本执行

  自动追加参数:script 执行参数  配置参数(日切:txDate【yyyyMMdd】 / 非日切:flowLastTime【时间戳Long】 flowCurTime【时间戳Long】)

    例如:日切任务--< sh /home/job/execdaily.sh 执行参数  20150101

      非日切任务-->< sh /home/job/execundaily.sh 执行参数  1490926800000 1490926800000  

4.2 其他待补充

http://www.cnblogs.com/loveyou/p/cuckoo.html

 

时间: 2024-10-02 07:57:01

开源分布式任务调度平台Cuckoo-Schedule的相关文章

XXL-JOB v1.4.2,分布式任务调度平台

V1.4.2 新特性 1.推送新版本 V1.4.2 至中央仓库, 大版本 V1.4 进入维护阶段; <dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>1.4.2</version> </dependency> 2.任务新增时,任务列表偏移问题修复; 3.修复一处因bs不支持模态框重

大众点评开源分布式监控平台 CAT 深度剖析

一.CAT介绍 CAT系统原型和理念来源于eBay的CAL的系统,CAT系统第一代设计者吴其敏在eBay工作长达十几年,对CAL系统有深刻的理解.CAT不仅增强了CAL系统核心模型,还添加了更丰富的报表.自2014年开源以来,CAT在携程.陆金所.猎聘网.找钢网等多家互联网公司生产环境应用. CAT是一个实时和接近全量的监控系统,它侧重于对Java应用的监控,基本接入了美团点评上海侧所有核心应用.目前在中间件(MVC.RPC.数据库.缓存等)框架中得到广泛应用,为美团点评各业务线提供系统的性能指

【对标TensorFlow】阿里公开内部超大规模分布式机器学习平台

近年来,随着"大"数据及"大"模型的出现,学术界和工业界对分布式机器学习算法引起了广泛关注.针对这一刚需,阿里集团和蚂蚁金服设计了自己的分布式平台--鲲鹏.鲲鹏结合了分布式系统及并行优化算法,解决了大规模机器学习算法带来的一系列问题,不仅囊括了数据/模型并行.负载平衡.模型同步.稀疏表示.工业容错等特性,而且还提供了封闭好的.宜于调用的 API 供普通的机器学习者开发分布式算法,降低使用成本并提升效率.相关论文在本届 KDD 以口头报告的形式发表(应用数据科学 Tr

探秘阿里分布式任务调度服务SchedulerX

7月中上旬,阿里云企业级分布式应用服务EDAS低调上线分布式任务调度服务,目前处于免费公测阶段.SchedulerX--是该服务在阿里内部的产品名字,顾名思义,比调度做的更多.随着公测的开启,阿里巴巴内部又一款核心中间件产品浮出水面. SchedulerX是阿里巴巴集团中间件团队开发的一款高性能.分布式任务调度产品,在阿里内部有着广泛的使用,经过集团内上千个业务应用历经多年打磨而成.截止2016年6月,每天平稳运行集团内几十万个任务,完成每天几亿次的任务调度.在未来SchedulerX将支持更多

分布式机器学习平台比较

这篇文章调查分析了多个分布式机器学习平台所使用的设计方法,并提出了未来的研究方向.这是我与我的学生Kuo Zhang.Salem Alqahtani通力合作的成果.我们在2016年的秋天写了这篇论文,并且将在ICCCN'17(International Conference on Computer Communications and Networks,计算机通信与网络国际会议)上介绍这篇文章. 机器学习,特别是深度学习(DL),最近已经在语音识别.图像识别.自然语言处理.推荐/搜索引擎等领域获

Apache Eagle:eBay开源分布式实时Hadoop数据安全引擎

日前,eBay公司隆重宣布正式向开源业界推出分布式实时安全监控方案:Apache Eagle,该项目已于2015年10月26日正式加入Apache基金会成为孵化器项目. http://goeagle.io  Apache Eagle提供一套高效分布式的流式策略引擎,具有高实时.可伸缩.易扩展.交互友好等特点,同时集成机器学习对历史模型训练建立用户画像以实现智能实时地保护Hadoop生态系统中大数据的安全. Eagle在eBay的使用场景 目前,Eagle的数据行为监控系统已经部署到一个拥有250

“物联利浪”提供开源物业SaaS平台 连接业主和社区服务提供商

有社区就有物业公司.物业公司一直以来信息化水平普遍比较低下,已有的物业服务平台往往是基于局域网,成本高.体验感不好.效率也不高.并且物业属于人力密集型产业,物业费作为其主要收入来源过于单一,物业公司常处于亏钱的状态. 因此,传统物业亟待转型.对于像万科.龙湖.保利等大型房产物业,基于战略和品牌保护往往会走自建物业APP的道路.但在全国注册10.5万家物业公司中,97.14%都是中小型物业公司,它们绝大多数缺少资金来开发和维护自有App. 切中中小物业的痛点,"物联利浪"一开始做得是为其

开源分布式关系型数据库 PingCAP 完成 B 轮融资

今日,全球分布式关系型数据库厂商 PingCAP 宣布完成 1500 万美元的 B 轮融资. 做改变未来的开源数据库,解放后端程序员 PingCAP 成立于 2015 年,总部设在北京,致力于前沿基础设施领域的技术创新实现.核心技术团队囊括业内全球众多顶级程序员,Codis.SenseiDB 等知名开源软件的作者均在其中.其核心产品 TiDB 致力于解决数据库领域一直以来存在的关系型数据库水平扩展的世界级难题. (PingCAP核心产品 TiDB) PingCAP 认为,开源是当前全球化背景下基

理解 Ceph:一个开源的分布式存储平台

理解 Ceph:一个开源的分布式存储平台 Ceph是一个软件分布式存储平台,可运行在商用硬件上.为了了解Ceph的运行效率,我们首先要弄清什么是商用硬件.商用电脑是由多个硬件供应商提供的硬件组装而成的,供应商们开发这些硬件是基于同一个开放标准的.与超级微型计算机相比,商品电脑的成本更低,并且它的开放标准能减少众多硬件提供商提供的硬件差异性.Ceph存储集群运行在商用机上,为了确保集群中数据的分布式存储和良好的可扩展性,Ceph运用了著名的CRUSH(Controllled Replication