分布式批处理调度平台介绍
一、背景介绍
随着分布式架构的大力推广,对任务调度这一常见需求也提出了新的挑战,传统应对单体系统的任务调度方式,已经不能满足日趋复杂的任务调度需要。如大数据日终处理、多任务流水线执行、高可用作业调度等场景对执行性能和统一管理都提出了更高的要求。
传统应用系统大都采用 Quartz 框架、甚至原始的 crontab 命令,当任务量大、相互依赖关系复杂时,会出现以下几点问题:
(1)性能问题
传统系统执行任务时多为线性执行,性能低下。核心、收单等日终任务常常需要 1 个小时之久,数据量大时更甚。此外,多个系统任务间还具有强依赖关系,需要依靠时序表、甚至手动来进行控制与检查。任务之间时间跨度大、效率低,导致整个日终批处理时间长,甚至有可能影响业务正常开展。究其原因主要有以下几点:
• 不支持分布式,存在单节点非高可用,或多节点任务重复问题,且效率低;
• 随着调度任务数量逐渐增加、调度任务逻辑愈加复杂,调度系统的性能大大降低;
• 大部分任务以“抢占式”获取数据库锁的方式处理数据,导致负载增大。
(2)依赖关系复杂
业务中经常出现顺序任务、多分支任务、嵌套子任务等任务场景。在这种复杂依赖关系的批处理任务场景下,传统的 crontab 命令无法支持,而使用 Quartz 等开源框架也存在诸多问题,具体表现如下:
• 任务管理混乱,生命周期无法统一协调管理;
• 依赖关系难以编排,一个任务失败,整套系统无法继续运行;
• 任务需要手动拆分,依赖关系需要侵入业务代码,难以维护。
(3)用户体验差
• 任务执行分散在各台服务器,维护成本高,查看日志繁琐;
• 任务失败无告警机制,需定期排查;
• 需要编码方式操作任务,无图形化界面,不人性化;
• 需要将任务数据持久化到数据库中,系统侵入性严重。
基于以上原因,中原银行分布式批处理调度平台应运而生,提供了以下能力:
中原银行分布式批处理调度平台的出现降低了应用开发门槛,提高了应用开发效率,任务执行性能也得到了提升。过去的系统日终批量任务使用了分布式批处理调度平台之后,不仅无需人工干预,执行时间大大缩减,而且任务之间的依赖关系通过可视化编排也得到了保障,即便执行出现问题也能及时告警通知,通过日志追踪快速定位问题,效率显著提升。
二、总体设计
2.1 开源框架对比
中原银行分布式批处理调度平台具有可编排、高可用、无侵入、一致性、异步并行、动态扩展、实时监控等功能。对比常见开源任务调度平台具有以下特点:
大部分调度平台支持高可用、实时监控等功能,但是对于任务编排、任务分段各有侧重点。分布式批处理调度平台全面支持这些功能,并且做到了严密的分组权限控制、服务器运行状态监控、任务执行情况统计,做到了调度可视化。
2.2 技术选型
中原银行分布式批处理调度平台是为业务系统使用的任务调度平台,技术选型从业务系统的角度出发,使平台具备无侵入、高可用、性能强、用户体验良好等特点。保证业务系统使用时开发便捷、配置简单、功能强大,为业务系统提供了很多一键配置的功能点。技术选型如下:
2.3 设计思想
中原银行分布式批处理调度平台采用微服务化设计思想,分为调度中心与执行端。采用调度和任务分离的方式,调度逻辑和业务任务的执行逻辑完全分离。
调度中心获取每个执行器节点上的任务元数据进行入库,确保信息备份,有据可查,并可以在线管理定时任务、批处理,动态修改任务时钟。
底层使用 Netty 通讯实现调度中心和执行端之间的通讯,实时监听执行端,向调度中心发送消息,调度中心接受信息后对任务进行实时调度。
以上设计保证了应用的性能,稳定性和伸缩性等,实现了框架的高性能及高可靠性。
调度中心集群:
• 通过控制台对定时任务进行配置;
• 定时任务导入导出,批处理任务导入导出;
• 调度线程池保证多线程调度精确执行,不被堵塞;
• 数据库锁保证集群分布式调度一致性;
• 多节点心跳检测,查询线程栈运行信息;
• 负载均衡,主备服务切换;
• 定时任务调起失败自动唤醒;
• 失败告警和短信告警机制;
• 任务的手动触发。
执行端集群:
• 提供任务执行的依赖;
• 任务启停机制、分段执行;
• 任务幂等、心跳检测;
• 服务器各个节点切换,提供负载均衡;
• 任务执行失败,自动重置;
• 任务备份,历史留痕可查;
• 多文件分段读取,断点续跑,配置化更细粒度。
三、功能介绍
中原银行分布式批处理调度平台可以分为五大功能(定时任务开发、批处理开发、作业记录、实时监控及权限控制)。功能如下:
• 定时任务:可以快速开发定时任务,通过页面编辑任务和控制任务启停;
• 批处理:对任务进行逻辑编排以及批处理启停;
• 作业记录:记录作业的任务状态和执行节点数据,支持断点续跑,有据可查;
• 实时监控:日志查看,线程和服务器监控,异常告警;
• 权限控制:各个业务系统的用户操作权限控制,操作留痕,提升安全性能。
3.1 定时任务
定时任务框架负责管理任务信息,调度任务,按照业务系统调度配置发出调度请求,业务系统只需关心自身的业务代码。同时框架支持 txt 和 excel 两种格式的业务数据文件,支持高效的读写操作。还支持可视化地、动态地管理调度信息,包括定时任务新建,编辑,删除和定时任务任务报警等,所有操作都会实时生效,同时支持监控调度结果和查看执行日志,支持业务系统故障重启断点续跑。定时任务配置的相关操作界面如下:
3.2 批处理
批处理是分布式调度中心支持在线任务模型编排的组件,依托于 web 界面任务编排。可以通过基础任务来编排一些复杂的批处理任务,并且框架支持分布式执行任务,提高任务执行速度,并保证任务间的依赖顺序关系。例如:
3.3 作业记录
平台对定时任务以及批处理调度进行全过程数据记录,调度中心每次触发调度都会进行数据记录,同时对任务执行状态进行记录和更新,做到作业留痕。
作业记录数据分为任务数据以及执行数据,任务数据包含调度器信息,调度时间,调度状态以及其他附加属性,执行数据包含执行器信息,执行时间,执行状态,返回信息以及其他附加属性。全流程的数据记录可以帮助开发人员实现对 Bug 的快速定位,通过数据查看直接分析出 Bug 产生位置、原因以及解决方案,从而保障了系统的可维护性,提高维护效率,降低维护成本。
3.4 实时监控
实时监控功能对定时任务、批处理以及联机处理的运行状态进行监控,并将监控信息入库,向调度中心汇报执行状态,用以保障任务的顺利运行,对异常加以汇报告警并进行实时处理。业务系统通过页面可以查看定时任务和批处理实时的执行情况,方便定位处理问题。
3.5 权限控制
权限控制功能主要是对平台对接的各个业务系统的用户操作权限进行控制。目的是让每个业务系统相对独立,避免相互影响。用户管理存在管理员和普通用户两种角色,从菜单维度和任务维度进行权限控制,管理员拥有全量权限,普通用户需要分配菜单权限和任务权限后才能进行相关操作。
本文转载自原银科技
原文链接:分布式批处理调度平台介绍
版权声明: 本文为 InfoQ 作者【中原银行】的原创文章。
原文链接:【http://xie.infoq.cn/article/fa4e8ba01d8adc3f85053945d】。文章转载请联系作者。
评论