Keeper 概览
Keeper 是一款轻量级但功能强大的分布式任务调度工具。
集群 Cluster
- 除了单机运行外,也支持对等集群方式运行,任意增减节点。
- 多机运行不需要 ZooKeeper,不需要每台机器上都进行其他节点的配置,完全去中心化,没有主从概念。
- 方便的集群节点资源监控和管理功能。
- 可通过全局事件对节点的各个状态进行控制或预警。
调度 Job
- 支持时间计划调度、无限循环调度、仅依赖触发的调度、仅手工执行的调度。
- 扩展的 Cron 表达式,可支持任意的时间计划调度设置。
- 无限循环调度支持分时段设置间隔时间,如工作时间间隔 5 秒执行一次,休息时间间隔 10 分钟执行一次。
- 支持重启时自动补全停机过程中错过执行的任务。
- 支持按时自动启用和停用调度。
- 支持手工修改下一次任务运行时间。
- 支持任务多并行度设置。
- 支持手工立即运行任务。
- 可以设置调度的负责人,用于权限控制和预警。
工作流 DAG
- 支持调度 Shell 命令、PQL 计算过程和 Python 脚本。
- DAG 的节点可以是不同的命令或脚本类型。
- 可以启停用 DAG 中的某个节点和后续节点。
- 单个命令和脚本可以设置超时时间,超时时会自动中断任务。
- 单个命令和脚本可以设置失败或超时重试次数。
- 可以向命令和脚本传递环境参数,如任务时间、调度 ID 等。
- 支持命令模板,可大大简化重复命令的设置工作。
依赖 Dependency
- 支持 3 种类型的依赖:任务依赖、SQL 查询依赖和 PQL 依赖。
- 通过任务前置依赖可以构建调度之间的“DAG”。
- 通过后置依赖可以对数据计算的结果正确性进行检查。
- 通过 PQL 依赖可以定制任何类型的依赖,如接口依赖、文件依赖等。
- 通过依赖可以扩展调度的分支,如上游任务成功和失败时下游执行不同的调度任务。
事件 Event
- 任务在生命周期中有不同的状态,在某一个状态点可触发不同的事件。通过事件可以实现预警功能。
- 可触发事件的状态包括:新建任务、任务依赖检查超过限定、任务准备好、任务成功、任务失败、任务超时、任务结果不正确。
- 基本事件功能包含发邮件、请求接口和执行 PQL 过程。
- 任务失败、任务超时、任务结果不正确都可以设置延时重启并可设置重启上限。
- 可以设置一个阈值,超时会触发任务执行缓慢事件,但不会中断任务执行。
- 可以通过 PQL 自定义事件,如拨打语音电话、发短信、发送企业微信消息、发送钉钉消息等。
- 预警信息可以同时发送给团队负责人和管理员。
- 可以设置事件触发的场景,比如手工启动的任务不触发事件。
任务 Task
- 支持重启已完成的任务和中断正在执行的任务。
- 记录每一次任务的运行情况,每个历史记录都可看到。
- 异常任务提醒和检查功能。
- 瀑布流图可以直观的显示整个任务和单个 DAG 的执行情况。
- 更易读的彩色日志。
- 可以只查看 Debug 日志和出错日志。
- 可以只查看 DAG 中某一个节点的日志。
权限 Role
- 多角色设置,可精细控制每个角色的权限。
- 普通用户只能管理自己的调度。
- 团队负责人可以管理自己和团队的所有调度。
- 可以控制团队负责人和普通用户的权限直至只读。
- 可以控制调度管理员的权限范围。
- 有访客角色,仅拥有有限浏览权限。
管理 Management
- 调度可按项目分组管理。
- 丰富的统计数据和图表,实时掌控任务运行情况。
- 可以自动清理过期的任务运行记录。
- 可以在页面上查看各组件的心跳并重启 Keeper。
- 可以在页面上查看 Keeper 的运行日志和出错日志。
- 中英双语管理界面,自由切换。
- 32 个随机颜色主题,每次登录都换个心情,也可固定颜色主题。
- 脚本部分支持彩色编码视图,直观易读。
扩展 PQL
- 与其他调度工具最大的区别是支持 PQL 数据处理语言,不仅支持运行 PQL 计算任务,而且可以通过 PQL 对 Keeper 的各项功能进行扩展。
- Shell 命令中支持嵌入 PQL 变量和表达式,以实现命令的定制化传参。
- 通过 PQL 依赖可以定制任何类型的依赖,如接口依赖、文件依赖等。
- 事件和预警中也支持运行 PQL,并且可以通过 PQL 自定义事件来实现更丰富的预警功能,如短信、电话、企业微信、钉钉等。通过 PQL 和事件,可以对整个调度任务的生命周期进行精确控制。
- 支持全局事件,可以机器节点不同状态时执行不同的操作。
- 提供多种功能的 Restful 接口,可以创建任务并对任务进行控制。