分布式任务调度在集中MSS系统中的实践应用
2021-07-22凌波
凌 波
中国电信MSS集中运营江苏支撑中心
0 引言
中国电信集中MSS系统涵盖了财务、人力资源、采购、物流、计划建设、运维成本、审计、SAP等多个专业子系统。该系统的建设实现了管理模式统一、业务流程统一、管理数据统一、系统运营统一,加强了集团公司的管控能力,能及时准确地掌握企业经营管理情况,迅速有效地进行资源调配,降低企业运营成本,提升管理的信息化水平。
随着集中MSS系统功能的不断扩充和完善,系统中的各项后台任务也越来越多,例如财务专业的报表集成、计划建设专业的用户日志上报、OMC监控上报、用户的统计数据下载等任务。每个MSS系统中的子专业系统都有定时任务的需求,如果都在自身子专业系统中调度,一方面增加业务系统的复杂度,另一方面也不方便管理,局部的任务过于繁忙,会导致整个系统的稳定性降低,从而降低前台用户的使用感知。
基于目前的情况,需要建立一个跨各个子系统的分布式任务调度平台,对集中MSS系统中的后台任务进行统一管理、统一调度,分散主机资源占用,从而提升系统的稳定性和灵活性。
1 建设目标
(1)后台任务服务由“独占”服务进阶为“分布式”服务。任务执行由原来的单个子系统独自管理,变为由分布式任务调度平台进行统筹管理。
(2)解决单点故障问题,保证系统高可用。后台任务的执行由于主机繁忙易导致任务失败,而分布式任务调度平台可以根据主机的忙闲情况,合理分配主机。
(3)解决任务调度水平动态扩展问题。当各系统出现大量后台任务时,可以随时对执行主机进行水平扩展,提升后台任务执行效率。
(4)支持任务调度的监控。通过分布式任务调度平台的前台页面,能实时监控到目前整个MSS系统中后台任务的分布情况,并根据任务的执行情况采取对应的运营手段。
2 技术架构
分布式任务调度平台的技术架构可以分为三大部分:Zookeeper组(Zookeeper Cluster)、任务调度组(Scheduler Cluster)、任务执行组(Worker Cluster)。
Zookeeper组(Zookeeper Cluster):实现任务的分布式配置及各服务间的交互通信,Zookeeper以TreeNode类型进行存储,支持Cluster形式部署且保证最终数据一致性。
任务调度组(Scheduler Cluster):任务调度机向控制台中心注册后,共享调度任务,且同一调度任务仅有一台调度机执行调度,当前调度机异常宕机后,其余的调度机会接上。任务调度组负责管理调度信息,按照调度配置发出调度请求,自身不承担业务代码。调度系统与任务解耦,提高了系统可用性和稳定性,同时调度系统性能不再受限于任务模块。支持可视化、简单且动态的管理调度信息,包括任务新建、更新、删除、GLUE开发和任务报警等。所有上述操作都会实时生效,同时支持监控调度结果以及执行日志。
任务执行组(Worker Cluster):任务执行组负责接收调度请求并执行任务逻辑。任务模块专注于任务的执行等操作,开发和维护更加简单和高效。任务执行机向控制台中心注册后,根据配置执行线程数量(单线程或多线程)执行任务,可单机执行或多机并行执行,当前执行机异常宕机后,调度机会新调度一台执行机接管执行。
3 实施部署方案
根据分布式任务调度的技术架构,对集中MSS系统的分布式任务调度部署分为三大部分:Zookeeper集群资源控制台、任务调度平台控制台、任务执行层。实施部署方案如图1所示。
图1 实施部署方案
Zookeeper集群资源控制台,建议新增服务器资源。为了保证控制台的运行稳定,可以采用“一主二从”的部署方式。控制台主要用于部署ZooKeeper的集群服务。
任务调度平台控制台,建议新增服务器资源,由三台应用集群和两台主从数据库组成。用于统一作业平台对调度策略、任务项进行维护,对任务执行情况、日志情况进行管理。
任务执行层,利用集中MSS系统的现有资源,对应用服务器集群进行重新设计、部署,任务执行工作仍然由各个业务系统完成,但统一由任务调度平台进行管控。
4 分布式任务调度的优势
(1)动态弹性扩容缩容。控制服务或执行服务可以通过ZK的服务注册和服务下线接口,完成服务的动态伸缩。对当前任务无感知,对后续接入的新任务生效。
(2)任务失效转移。在弹性扩容缩容或部分服务失联的时候,本服务正在执行的任务会被调度到其他正常可执行的服务继续执行,直到完成为止。
(3)大任务分片。将一个大型任务拆分为n个独立的小任务项,然后由分布式的服务器分别执行某一个或几个分片项,达到分散压力,提高执行效率的目标。
(4)多线程作业。对于一些高吞吐的业务处理模式,可以开启足够多的线程快速处理。
(5)保证数据一致性。基于Paxos算法,通过投票对写操作进行全局编码,同时刻只有一个写操作被批准,不会出现重复执行的情况,保证了企业数据一致性。
(6)资源集约管控。M域各专业分散的任务作业服务,本专业内分散在各个节点、各个省份的任务作业服务,由分布式任务调度平台进行统一管理和分配,解决了资源忙闲程度不均的问题,进一步提升了企业资源利用率。
(7)任务实时监管。系统的任务作业状态由原来的不可预知、无法监控到现在可对服务状态、失败次数、运行时间等指标进行实时掌握。
5 结束语
本文所介绍的分布式任务调度技术在中国电信集中MSS系统中进行了部署和推广应用。中国电信集中MSS系统涵盖了人力资源、采购、物流、计划建设、运维成本、审计、SAP等多个专业子系统。在没有部署分布式任务调度平台前,各个子系统的后台任务只能在各自系统的后台任务执行机中执行,业务繁忙期间,例如月初的采购备货、月中的集中项目审计、月底的财务月结等,用户有大量的报表统计、数据导入导出、操作日志上报等操作,在独立后台执行机的情况下,后台任务只能依次排队执行,排队等待时间长,并且由于任务超时容易导致任务执行失败,整体的后台任务执行成功率只有83%左右。上线分布式任务调度平台后,所有子系统的执行机在任务调度平台的统一指挥下,为所有的系统服务,哪台执行机器空闲,就分发任务至该台机器执行,后台任务执行的成功率提升至99%,整体任务执行的时间也缩减至原来的四分之一,用户使用更便捷,系统响应更快,用户感知提升明显。该平台获得2019年中国电信集团公司个人岗位创新二等奖。