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下载

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 其他待补充

python任务调度平台 界面_任务调度平台Cuckoo-Schedule相关推荐

  1. python任务调度平台 界面_分布式任务调度平台XXL-JOB

    以前带我的人说过,最好的学习就是看官方文档,个人也有4个T的学习视频,但是会发现讲的都是入门,有的也比较浅. 官方文档比较官方,也比较权威,打开xxl-job的官网,写的贼详细,有些人喜欢收博客,不喜 ...

  2. python任务调度平台 界面_分布式任务调度平台XXL-JOB搭建教程

    关于分布式任务调度平台XXL-JOB,其实作者 许雪里在其发布的中文教程中已经介绍的很清楚了,这里我就不做过多的介绍了,关于其搭建教程,本人依照其文档搭建起来基本上也没遇到啥问题,这里通过博客的形式记 ...

  3. 派森编程软件python有什么用_派森平台干什么的

    展开全部 派森平台2113是一个应用平台,某些5261软件需要它的支持才可以运行.4102 Python是一种计算机程序设计语言1653.是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(s ...

  4. python测试开发实战_自动化平台测试开发:Python测试开发实战

    领取成功 您已领取成功! 您可以进入Android/iOS/Kindle平台的多看阅读客户端,刷新个人中心的已购列表,即可下载图书,享受精品阅读时光啦! - | 回复不要太快哦~ 回复内容不能为空哦 ...

  5. python跟java 效率_对比平台--Java与Python之间的性能差异

    ava Performance和Python之间的主要区别 以下是描述Java Performance和Python之间的区别的要点列表: 以下是Java性能与Python之间的主要区别,我们在决定应 ...

  6. python和perl区别_对比平台--Perl与Python之间的差异

    Perl是一种面向对象的开源程序,用于在Unix系统中构建和实现应用程序,类似于python.Perl与Python之间有一些主要区别.Perl需要分号来指示行尾,但是python不需要.尽管Perl ...

  7. 百度云和ai开放平台关系_集成平台即服务,云和……独角兽

    百度云和ai开放平台关系 啊,是的,这个虚幻的乌托邦"云"中,独角兽嬉戏,蝴蝶纷飞,魔术精灵为我拿来了四分之三的啤酒. 我爱那个地方. 我刚刚在羊皮服装公司的一家开源狼网站上看到了 ...

  8. python做ui界面_从零开始创建UI

    这篇教程会详细介绍如何创建自己的第一个UI界面(包含文本框和按钮)以及按钮相关的逻辑绑定.将按照以下步骤来进行介绍: 1.如何根据自己的需要来写UI界面json内容(包含一个文本框和一个按钮) 2.如 ...

  9. python html做界面_用Html来写Python桌面软件的UI界面-htmlPy

    在写Python软件的时候,一般用命令行就行了,但是某些特殊情况下(主管要求),需要写一个还能看的界面提供给客户的情况下,那就必须要用到Python的UI包. 试用了很多种: 因为一直用的Python ...

最新文章

  1. 使用Vue+Spring Boot实现Excel上传
  2. 在Windows XP下,安装VS 2010 Express For Windows Phone .
  3. 鼠标关机后仍然发光的实用解决方法
  4. java职业发展路线图_软开(Java),该如何规划职业路线?
  5. Ethereum 开发简介
  6. 计算机应用软件安装教程,计算机应用与网基础教程 常用软件安装.ppt
  7. make -C $(KDIR) M=$(PWD) modules
  8. Java招聘数据统计_拉勾网2019年3月20日招聘数据统计
  9. NHibernate入门实例
  10. 【转】vim ctag使用方法
  11. 学习vim: 配置python相关插件
  12. DB9接口公头母头引脚区别
  13. 研磨设计模式之工厂方法模式-2
  14. 韩昊 20190919-2 功能测试
  15. linux输出替换字符串,Linux命令之sed-替换字符串
  16. Linux command – Stressful Application Test
  17. C Sleepy Kaguya
  18. 大数据工具和数据库区别和关联
  19. 07.图6 旅游规划 [Dijkstra 算法]
  20. CGAL Cookbook --CGAL简介

热门文章

  1. PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to fi
  2. 这是什么神仙公司?居然公布离职员工信息,还给差评?
  3. 皮一皮:这样的消息我也想收...
  4. 阿里面试:索引失效的场景有哪些?索引何时会失效?
  5. 技术除了工作,还有什么可以提升的?
  6. 公司新来了个大神,一次分享他的 9 大技能
  7. 神回答:编程到底难在哪里?
  8. 一篇文章,带你了解 “机器学习工程师” 必备技能图谱
  9. PaddleDetection 个人测评
  10. conda Linux系统下的安装与使用