前言
Schedulerx2.0是阿里中间件自研的基于Akka架构的新一代分布式任务调度平台,提供定时、任务编排、分布式跑批等功能,具有高可靠、海量任务、秒级调度等能力。
Schedulerx2.0在公有云公测2年,服务超过1000家公司,积累了丰富的经验,稳定性也得到了足够的验证。为了提供更优质的服务,于2021.9.1正式商业化,同时也会带来更加强大的能力。
强大功能
定时调度
Crontab
- 支持可视化的crontab表达式
- 支持时间偏移,可以通过数据时间做跨天的业务
- 支持时区,可以做国际化的定时任务
Fixed rate
众所周知,crontab必须被60整除,比如想每隔40分钟跑一次,cron不支持。Fixed rate专门用来做定期轮询,表达式简单。
秒级别调度
通过second_delay表达式可以支持秒级别调度,适合不停执行的实时业务,业务不能中断。
任务编排
schedulerx2.0支持工作流(DAG)进行任务编排,操作简单,前端直拖拖拽拽即可。详细的任务状态图能一目了然看到下游任务为什么没跑,如下图:
schedulerx2.0的工作流还支持上下游数据传递
轻量级分布式编程模型
支持单机、广播、分片、MapReduce多种分布式执行模型。
- 单机模型:业务多节点部署时,保证不重复执行。
- 广播模型:所有节点都执行同一逻辑,全部执行完还可以由一台机器回调一次postProcess方法,常用在批量运维,批量清理日志、缓存。
- 分片模型:支持类似elastic-job的分片模型,常用在分库分表的跑批。
- MapReduce模型:Schedulerx2.0自创的轻量级分布式编程模型,只需要实现map和reduce方法,就可以将海量数据分布式到多台机器运行,相对于传统大数据跑批:
- 成本低:直接复用在线应用的机器,不需要额外计算资源
- 速度快:不需要数据导入导出,直接跑批线上数据库、oss等,可以作为实时业务的跑批
- 学习简单:不需要大数据的知识,会java就行
- 可以处理负责的业务:在线业务处理往往逻辑很复杂,传统大数据跑批sql无法满足,使用java高级语言可以处理复杂逻辑,还可以直接复用业务接口。
多语言
除了java语言,schedulerx还支持多种语言的任务类型
其中http任务是serverless,不需要注册客户端就能执行。Schedulerx的http任务支持签名认证,防止用户的http接口被恶意攻击。
丰富的任务运维能力
- 支持对堵塞任务的手动停止、超时自动停止。
- 支持对失败任务的原地重跑、标记成功。
- 支持重刷数据:通过数据时间+重刷数据,可以重刷历史上的数据,把漏跑的任务重新执行。
商业化报警
- 报警通道支持短信、钉钉机器人、邮件
- 报警类型支持失败报警、超时报警、无可用机器报警等
- 每个任务都可以单独配置报警联系人,也可以使用应用的报警联系人组
全新的权限体系
本次商业化带来了全新的权限体系,支持阿里云RAM权限,支持读写等细粒度权限控制。
新增站点
本次商业化,新增了香港、新加坡、德国、美国、日本站点。
用户有其他站点的需求,可以提工单给我们,我们会尽量满足。
未来规划
日志收集
收集客户端的任务调度日志,甚至是应用日志,可以直接在控制台看到日志,分析任务失败的原因。
弹性扩缩容
离线任务分布式跑批的时候,可以动态扩容机器加快处理速度。跑批结束,可以缩容,节省机器成本。
一次性任务
一个任务只在未来某个时刻点执行一次,执行完自动销毁。