Cuckoo-Schedule

JAVA集群调度系统
授权协议 Apache
开发语言 Java
所属分类 程序开发、 作业/任务调度
软件类型 开源软件
地区 国产
投 递 者 卫仲卿
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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

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

整体架构

功能特性 

调度集群 

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

任务依赖 

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

任务分类 

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

例如: 

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

任务分片 

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

任务执行查看 

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

任务重跑

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

任务暂停 

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

任务告警 

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

任务配置 

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

客户端分类 

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

客户端切面 

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

客户端脚本任务 

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

 相关资料
  • Cuckoo 是一个轻量级的 windows 二进制文件行为自动动态分析工具。它能够给出程序运行过程中详细的关键 API 调用和网络活动。Cuckoo 项目是参加 2010 年 google 编程夏令营的作品,在 GPL 许可下开源发布。任何人可以将其加到自己的项目中,打造自己的恶意软件行为分析工具。

  • 我们的(Spring)应用程序包含几个,这些调度器在夜间活动,以更改/更新中的一些数据(来自 )。 这一切都运行良好,问题是我们的应用程序很快就会在运行。 防止< code >实例A和< code >实例B的< code >调度程序同时执行相同工作的最佳选项是什么? **UPDATE** 群集环境设置为。 每个节点都与自己的数据库实例通信。每个数据库实例将数据复制到其他实例。 DB-实例不是设置为

  • 活动复盘 01 群面题目 02 自我介绍(耗时5min) 本次参加的同学们主要是不二社群的粉丝,他们大部分毕业于23届,来自国内985、211等重点高校以及海外名校,平均每个人有2段产品相关实习经历。 03 自由讨论&汇报(耗时30+5min) (1)读题(耗时2min) (2)第一阶段: 确定角色分配与整体框架 (3)第二阶段: 展开讨论——背景/问题剖析(使用习惯、师生身份地位、资源时间限制)

  • 有人能建议从节点集群收集指标的最佳模式吗(每个节点都是带有Java应用程序的Tomcat Docker容器)? 我们计划使用ELK堆栈(ElasticSearch、Logstash、Kibana)作为可视化工具,但我们的问题是如何将指标交付给Kibana? 我们使用DropWizard度量库,它提供每个实例的度量(量表、计时器、直方图)。 显然,应该收集每个实例的一些指标(例如,cpu、内存等..

  • 我们使用Spring来运行调度任务,这在单节点上运行良好。我们希望在由N个节点组成的集群中运行这些计划任务,以便任务在一个时间点由一个节点执行。这是针对企业用例的,我们预计最多会有10到20个节点。 我研究了各种选择: 使用Quartz,这似乎是在集群中运行计划任务的流行选择。缺点:我想避免数据库依赖。 使用zoowatch,并且总是只在领导/主节点上运行计划的任务。缺点:任务执行负载没有分布 在

  • 我的we应用程序A将扫描业务相关的数据库表,并在启动期间和之后每10分钟安排石英作业。如果我在两个不同的tomcat实例上部署两个A应用程序,那么将有两组通过Quartz调度的重复作业。 我该如何解决这个问题?我是否需要将调度作业的部分代码提取到单独的应用程序中,并确保只部署了1个实例,从而只调度了1组作业?但是问题变成了--如果这个实例失败了怎么办?在这种情况下,如何实现故障转移?