摘要:数据处理作业任务的调度管理对邮政信息项目的顺利开展至关重要。文章针对邮政金融数据挖掘信息项目的特点及需求,提出了自动任务调度管理系统的建设意义及实现方式,探讨了自动任务调度管理在邮政金融数据挖掘信息项目中的应用,并对未来应用前景进行了展望。
关键词:数据挖掘;ETL;任务调度;业务逻辑;多线程
随着邮政信息化建设的不断深入,数据是企业的重要资产这一理念已成为共识。通过深入挖掘各业务系统累积的业务数据,保障批量任务程序高效运行,具有可靠性、可扩展的自动任务调度系统的开发与应用显得尤为重要。
1邮政金融数据挖掘信息项目的特点
目前各省开发的邮政金融数据挖掘信息项目,从原始的数据下载系统到最终的目标应用系统,必然要经过数据抽取、转换、加载(以下简称“ETL”)的数据流转过程。但在实际的数据分析和项目开发过程中发现,与一般意义上的ETL过程相比,邮政金融数据挖掘信息项目有其自身特点。邮政金融数据下载系统的数据来源主要有两部分:一是各邮政金融生产系统直接生成的接口数据,二是邮政金融客户管理系统经过归集的数据。数据下载系统已将下发数据全部加载到数据库中,相对于一般意义上的数据挖掘,数据质量明显改善。在省内信息项目中,主要数据处理通常包括筛选、归集、计算等再加工流程,一般无需再进行专门的数据清洗等操作,而且基本不需要考虑数据库之外的数据源。在日常数据分析过程中,各省信息技术部门积累了大量对数据提取、归集的结构化查询语言(以下简称“SQL”)脚本。在做信息项目的过程中,项目需求与日常数据提取工作有一定的重叠性。在一些简单的信息项目中,借鉴日常数据提取的工作经验,可以较快地生成相应数据处理的数据库存储过程,但缺乏一个简单、便捷的调度管理工具,将这些存储过程组织在一起。
2自动任务调度管理系统的重要作用
ETL作为邮政数据挖掘信息项目的基础,按照一定的规则集成并提高数据的价值,是从原始数据向业务模型转化的过程,是项目实施的关键步骤,但往往被人们忽视。如在日常工作中,经常会用到调度脚本来周期性完成计划任务的方式,但这种方式只适用于少量作业的简单场景,根本无法满足实际项目过程中复杂的依赖关系、异常控制及恢复等重要功能需求。对于省内常见的小型信息项目来说,采用现有的ETL工具意味着较大的投资成本和后续的跟进维护及二次开发等问题。且现实中很多信息项目业务逻辑存在差异性,为获得最佳性能,很多任务都需另外开发。而作业调度则不同,每个信息项目都需要通过作业调度将作业任务有效组织起来。因此,ETL是信息系统的基础,而调度是ETL的灵魂。中国邮政集团公司山西省信息技术局(以下简称“山西省邮政信息技术局”)在项目建设实践中,经过不断的总结提升,最终形成一套统一的、相对独立的自动任务调度管理系统,基本实现了将业务逻辑封装在定制的存储过程中,通过任务列表进行统一管理调用。在自动任务调度平台基础上,只要进行存储过程的开发配置,就可以快速实现基本的数据流转,通过实际应用,完全可以满足一般小型信息项目的需求。
3自动任务调度管理系统的实现方式
3.1对业务逻辑进行封装
由于实际业务逻辑的差异性、复杂性,为了便于管理,同时将调度管理系统与具体业务处理进行隔离,通常要将业务逻辑封装在一系列独立的作业任务中,在调度管理系统看来只是作业任务,对于作业的内部逻辑,调度管理系统并不关心。从实际的运行经验看,需要将作业任务拆分细化为独立、较小的事务,或成功提交,或失败回滚。这样有利于异常中断的恢复,同时拆分为多个较小的事务,实际处理效率较高。
3.2统一的作业调度接口
为了实现相对独立的通用任务管理平台,需要对作业任务定义统一的作业调度接口。目前的作业调度接口只定义了基本的返回代码和错误信息两个域,主要实现任务调度的管理需求。显然这两个基本字段无法满足复杂的业务逻辑需求。通过分析归纳系统需求发现,最主要的调用内容是数据日期类的调用,而对于一个特定的业务系统来说,大多数据日期是相同的,通过在信息系统中设置参数表,定义相应的日期参数、业务参数,可以将这些参数的访问、维护也封装在作业任务中。这样完全可以在满足业务逻辑的前提下,实现基本的统一作业调度接口。
3.3任务队列配置
依赖关系是ETL作业最重要的内容,目前采用的方式是在数据库中创建任务列表,通过专门的存储过程对任务列表进行维护。任务列表通过任务序号体现任务间的顺序执行依赖关系,同时通过对任务列表的维护,实现任务的触发,执行状态、异常场景的保存等。在任务调度的不同阶段,可能存在复杂的依赖及并发关系。为了提高执行效率,在任务列表中对并发调度进行了细化,对每个任务对应的应用模块执行顺序、是否可并发执行、并发执行的阶段序号进行了灵活的动态配置。这样根据任务的特性及依赖关系,可以灵活地按顺序执行或者分阶段多线程并发执行,对计算量大的步骤还实现了步骤内按机构并发执行,显著提高了后台计算的执行效率。
3.4任务触发
任务触发可以分为定时周期性触发和事件触发。目前省内依托数据下载系统的信息项目,最主要的触发条件是数据下发情况和依赖步骤的完成情况,以周期性触发为主。具体方式为定时调用调度平台,检查数据下发情况,同时检查任务列表的完成情况,对可满足执行条件的任务进行筛选,对有前后依赖的步骤按配置的优先顺序逐一进行调用。对于没有依赖的任务,进行并发调用。对于时效性要求较高的任务,也可采用事件触发的模式进行调度,将调度平台作为后台服务驻留在内存中,对关心的事件进行轮询。当有触发事件发生时,调用对应的任务进行作业处理。
3.5多系统协同
在实际应用环境中,一个信息系统的处理结果可能会应用到另一个信息系统中,即各系统之间存在数据交互。如积分回馈系统的数据明细,就是作为代理金融客户分户管理系统的数据源,即上游数据提供系统的任务完成情况,触发了下游目标系统的任务处理。但这种协同关系不宜过多,否则建议将作业流程独立,再分别将需要的数据集提供给目标系统。
3.6意外情况的处理机制
实际开发中,可能出现的异常主要来自系统资源问题和数据异常情况。通过异常处理机制,异常原因会通过调用接口返回到调度平台,对任务异常中断、正常结束等状态进行标记,通过查看日志和任务列表的任务状态和备注信息可实现异常的定位和处理。如常见的回滚段或内存资源不足导致异常,只要调整资源配置或减少并发数配置后,修改任务状态为就绪,即可实现后续任务的恢复处理。
3.7数据流转效率
对于批量任务来说,由于数据量巨大,数据处理效率成为决定项目成败的重要指标。对任务处理的优化工作,基本贯穿于整个项目过程,具体可以分为单个作业任务内的优化和整体效率的优化两方面。3.7.1单个处理任务优化采用并发查询语句和SQL数据分析函数,简化SQL语句的复杂度,提高处理效率。利用数据库表分区,将数据拆分到小的分区中,缩小检索范围。对于大批量修改的任务,酌情采用创建临时表的模式,取代直接批量修改的方式。对于跨系统的数据抽取,采取在远端数据库创建视图的方法,只抽取视图的查询结果,减少网络压力。对于某些大批量数据计算,由调度平台实现多线程并发处理,并对并发度进行参数化设置。3.7.2整体任务效率优化对于整个批量处理的整体效率,由调度平台的任务间并发进行优化。通过配置任务列表,调度平台筛选出可以并发的任务列表并加载到线程池,分阶段进行多线程并发调用处理。经过一系列的项目实践,基本满足了项目要求。
4自动任务调度管理系统在信息项目中的实际应用
自数据下载系统上线以来,为促进邮政金融业务的发展,实现以客户为核心的精细化服务,提升客户体验,特别是在网点转型跨越发展的新形势下,山西省邮政信息技术局先后开发了一系列邮政金融信息项目,并推广到兄弟省,为邮政金融业务的快速健康发展起到了积极作用。在上述系统的开发建设中,业务需求各有侧重,前台的实现方式不尽相同,但在后台的数据处理方面,经过不断的总结提升,最终形成了统一的、相对独立的自动任务调度管理系统,作为基础平台,应用于上述各系统中。
4.1实现了数据流转的基础平台
山西省邮政信息技术局自行开发的任务调度管理系统,基本形成了将业务逻辑封装在定制的存储过程中,通过任务列表进行统一管理调用的模式,实现了与业务逻辑的隔离。在实际的项目开发中,只需关注具体业务逻辑的开发,通过任务配置即可实现数据处理过程,项目开发效率明显提高。将业务逻辑进行封装,通过任务队列进行动态管理,灵活地实现了任务流程的定制。只需调整任务列表配置,无需修改代码,就能实现任务按先后次序约束执行,或无关联的任务并发执行。对于异常情况,系统可以直接指定从某个任务开始恢复后续任务的执行。甚至对于一些临时需求,也可简单订制临时任务,通过调度管理系统实现对业务的快速响应。在数据挖掘信息项目中,处理单个批量任务的数据量达千万笔。经过多方面的优化处理,系统运行效率基本满足了项目要求。通过多年的实际运行和开发实践,对于目前省内依托数据下载系统开发的小型信息项目,任务调度管理系统的模式完全可以满足现有功能需求,加快开发进度。
4.2多方位支持邮政金融业务发展
4.2.1开发积分回馈系统,加强对现有客户的维系2012年上线的积分回馈系统实现了对所有储蓄客户的积分累积,需处理的数据量有上千万笔。同时,各积分指标周期不同,积分规则可能会根据业务发展的实际情况进行动态调整,其计算流程相当于多个积分指标的计算流程相叠加。通过将批量任务的组织管理单独分离出来,交于调度平台处理,并对大数据量的任务处理实现了多线程并发计算,原来经过几十个小时未能完成的作业任务,在多线程处理后几个小时内即可完成,圆满完成了项目建设任务,同时为后续信息项目的开发提供了平台支持。4.2.2开发邮政储蓄网点客户管理信息系统,推动金融网点转型工作为推动邮政代理金融网点转型工作顺利开展,2013年山西省邮政信息技术局开发建设了邮政储蓄网点客户管理信息系统。由于系统业务指标多,后台作业步骤多,依赖关系复杂,即便是简单的顺序执行,一次完整的数据处理也需要运行几天时间。山西省邮政信息技术局一方面通过建立远端视图,只抽取经过归集的结果数据,提高了任务处理效率,另一方面将整个任务处理分为几个阶段,在阶段内进行无关联任务的并发处理,最终在一晚时间完成整个数据处理,保证了网点人员对系统的正常使用。4.2.3开发储蓄业绩认定系统,激励员工营销工作2014年7月,为系统性解决储蓄余额积分计奖问题,山西省邮政信息技术局开发了储蓄业绩认定系统。系统计算的业务逻辑较为复杂,基于任务调度管理平台的支持,项目开发重点关注具体业务逻辑的实现,完成了作业任务发布及单元测试。项目上线后,对于一些特殊的临时需求,定置临时任务队列,快速响应了业务管理需求,在金融市场竞争日趋激烈的情况下,为山西省邮政储蓄业务的稳定发展起到了重要作用。
5前景展望
随着邮政业务的迅猛发展,市场竞争日趋激烈,如何更好地做好技术支撑工作,为业务发展、经营决策服务,是中国邮政亟需解决的重要课题。只有积极跟进业务发展的实际需求,不断拓展应用功能,持续优化大数据量处理效率,提升对复杂场景下数据流转的支持力度,才能更加灵活、稳定、高效地为业务经营活动提供支持,在信息技术推动业务增长、提高企业经营管理水平和节能增效等方面多出成果。
作者:吴家光 单位:中国邮政集团公司山西省信息技术局