• 快捷搜索
  • 全站搜索

核心系统日末批处理性能优化实践

2015-08-27 16:12:01作者: 华夏银行科技开发中心 黄挺 郭少杰 董卫春编辑:金融咨询网 徐仲雅
日末批处理通常为商业银行信息系统运行维护的重要日常性工作。本文结合华夏银行核心系统日末批处理的性能优化工作实践,研究探讨批处理的性能优化设计方法。

日末批处理通常为商业银行信息系统运行维护的重要日常性工作。核心系统的批处理是日末批处理的重要环节,其执行效率的高低直接影响到运行维护工作强度的大小,并决定了突发事件、版本升级切换等可预留时间窗口的长短。本文结合华夏银行核心系统日末批处理的性能优化工作实践,研究探讨批处理的性能优化设计方法。

一、优化成果说明

        1.批处理时间得到大幅缩短

        我行核心系统引进国外产品并进行了客户化改造。随着账户数的不断增长,全行切换投产后产品原始设计上的弊端逐渐显现,批处理时间增加。根据实际运行情况,我们经过了一系列分析优化,使批处理时间缩短50%左右,并有效控制了账户数、交易量与批处理时间的线性关系。即使未来账户数和交易量大幅增长,批处理时间也不会同比例延迟。根据对下一阶段优化策略的估算,未来批处理处理时间还可以下降20%以上。表1是部分处理作业的优化方法及提升效果。 

333.jpg

        2.运行维护压力降低,升级时间窗口扩展

        每日批处理时间缩短50%以后,大幅降低了运行维护的工作强度,同时也为日常的升级工作特别是大版本投产提供了较充裕的时间窗口。

二、分析方法

        1.各处理作业耗时的趋势分析

        从生产中获取每日各个作业批处理耗时,绘制出各个作业耗时与日期的曲线图,得出随着数据量增长耗时明显增长的作业。通过分析处理逻辑发现,这些作业通常存在对历史数据无效读取的操作。而优化工作可从耗时最长的作业开始,其优化空间相对较大,不断地选取耗时最长的作业、与数据量增长相关程度高的作业进行优化,成果将体现在整体的批处理过程中,如图1所示。

444.jpg

        2.当前资源瓶颈的持续分析

        在每日批处理运行期间,分析各个作业处理期间所对应的I/O大小、CPU使用率以及数据库SQL消耗情况,从而有针对性地对各种资源消耗高的情况采取相应的处理方式。如果I/O速度成为瓶颈,则更换速度更快的存贮设备,或分散热点卷上的数据;如果SQL消耗成为处理瓶颈,则考虑优化该SQL的逻辑;对于无法充分利用其I/O及CPU的作业,则需要通过加强并发等方法,提高其处理效率。

        3.访问资源的合理性分析

        日末批处理的逻辑较为复杂,单一地通过分析处理逻辑提高效率,工作量大且效果往往不佳。而在测试环境打开调试日志,通过数据库日志分析作业所访问的表、访问方式、访问次数等,则能够从另一个维度相对容易地分析出这些表的访问方式和访问次数是否合理。对于存在不合理数据库访问的作业,有针对性地检查处理逻辑,则较容易发现逻辑问题,从而进行优化处理。

三、解决方法

        在批处理优化具体实现方面,我们进行了并发调整、作业分流、辅助软件引入等多方面的调整和优化。

        1.分析作业的访问资源,加强并发处理

        我们对各个作业所访问的表、访问方法做了统计,并制订成二维表,可以直观地看到各个作业与访问资源的对应关系,很容易分析出无资源访问冲突的作业,从而将这些作业同时并发处理。

        2.加大处理作业的并发

        加大处理作业的并发包含两方面内容,一是增加同一处理作业的并发数量,二是增加不同处理作业间的并发。在增加同一处理作业的并发数量过程中,主要存在的难点是扩展预留位不足、以时间为主键的表结构难以扩展。不同处理作业间并发的难点则主要在分析过程,如何得出作业之间的逻辑依赖关系,需要更多地深入了解各个作业的具体功能,以及是否存在访问资源冲突的情况。

        无论是同一作业还是作业间并发,只有通过逐一分析存在的问题并提出相应的解决方案,才能进行扩充并发数来提高处理效率。

        3.将统计类处理移至克隆系统

        为了给报表系统抽取核心数据做加工等需要,华夏银行核心系统每日均通过EMC存储的TimeFinder技术,将生产环境数据库数据同步复制到克隆系统,报表系统从克隆系统抽取加工数据。而核心系统中仍有大量的统计类处理,该类处理并不修改数据,仅是加工统计数据,例如生成对账文件、生成总账接口文件等。经过分析后,将这部分处理作业挪至克隆系统完成,既减轻了生产环境的运行压力,也缩短了该部分作业运行所耗时间。

        通过TimeFinder技术同步复制数据通常需要一定时间,如果使用的是ORACLE数据库,可考虑采用DataGuard技术来实现数据的备份存储,从备份系统中进行同步复制以减少对生产环境的影响。

        4.增加系统间作业异步的处理机制

        如果核心系统的批处理作业与外围系统存在依赖关系,则需要分析是何种依赖关系。如在优化过程中发现因核心系统与外围系统存在对账的需要,要求核心系统与外围系统同时切换日期,存在依赖关系,我们修改了对账逻辑,不再将日期作为强制的匹配条件,而是以外围系统业务日期作为对账的依据,从而解除其依赖关系。又如,在外围的信贷系统批处理未完成时,核心系统启动了次日的批量扣款,相关扣款交易信息将会同步至正在进行批处理的信贷系统(我们将这种数据同步的机制叫做刷新),这种情况将导致信贷系统批处理数据不准确。我们增加了刷新停止及启动机制,待信贷系统批处理完成后再启动刷新,从而解除了核心系统处理作业与信贷系统的依赖关系。

        5.作业调度软件引入

        华夏银行核心系统运行在AIX平台,通过SHELL脚本控制作业运行,存在着控制多作业并发运行困难、作业后台运行困难、操作界面不直观、操作不简便等问题。为了有效解决上述问题,我们引入了作业调度软件。通过该软件的配置文件,可设置作业处理逻辑的依赖关系,通过作业调度软件可以同时控制启动多个作业的运行,并检查作业运行结果。如果有返回错误,则停止后续作业的运行并报警,如果结果正确,则启动后续的作业运行。

四、批处理设计思路

        通过核心系统批处理优化工作及日常工作实践,我们认为在设计上应从以下几个方面进行充分考虑,以期获得更好的处理性能,减少批处理时间。

        1.充分考虑系统的扩展性

        由于国外银行业务的局限性,国外核心系统设计之初对系统的容量考虑不周,集中体现的问题是处理的作业没有并发设计、或并发的预留位数不足。因此在系统设计上,应考虑能够支持作业分支数的灵活调整。通常可设计一套并发处理规范,例如并发的分支数均需支持4位数,即最大支持9999个作业的并发,各个分支访问主表的一个区间,该区间均需在对应配置文件中加以定义。制定各分支作业模板自动生成的机制,以便在需要的时候可较灵活、方便地进行扩充。

        2.避免对外围作业有依赖关系

        核心系统批处理的作业通常与外围系统的作业有相互依赖关系,然而不应因外围系统的故障或拖延而影响核心系统的批处理进程,这样可保障核心系统批处理不依赖于外围系统而独立完成。

        3.具备对冲突资源同时处理的设计

        随着系统复杂性和作业并发度的提高,很难避免并发作业间所访问的数据库表完全相互独立,这将会导致因资源冲突而死锁。因此,在设计上应考虑不同作业资源访问顺序的一致性,同时应考虑当遇到资源被锁住时,存在等待一段时间后重新访问的机制,可以加大作业的并发,从而提高整体处理效率。

        4.资源群组的合理划分

        批处理作业是整体批处理的处理单位,通常各个作业均需访问一定范围的资源,如数据库表、文件等,作业所访问资源的数量决定了作业所访问资源合集的粒度,合集粒度过大时,单作业时间长,与无资源冲突的处理作业并发困难,而合集粒度过小时,处理作业数量增多,整体复杂性提高,不便于维护。因此,资源合集的合理规划显得非常重要。

        5.最小关键路径的设计

        在批处理的设计阶段,考虑功能可实现的同时,应重点兼顾处理效率。首先要根据日末批处理作业间的依赖关系找到关键路径,尽可能地缩短关键路径上作业的处理时间,并将无逻辑依赖关系的作业做并发处理设计,从而缩短每日批处理的整体时长。

        6.数据结构的合理设计

        我行核心系统的时间精度为0.01秒,在数据绪沟特别是表键值的设计中,有的主键值由时间组成,而0.01秒的时间精度可能造成多并发作业在同时写入表记录时发生冲突。因此如果存在记录时间的需要,最好再增加一个序号字段,处理逻辑中增加判断,若当前写入时间与最后一笔写入时间相同,则序号字段加1再写入,避免时间粒度不够带来的问题。若不需要处理时间,可使用数据库提供的序号生成器生成键值,从而避免多并发处理带来的写入冲突问题。在设计需要并发访问的数据库表时,应能较好地进行数据的区间分配,以支持各个作业处理不同区间的数据,或作为表分区的依据。如果是历史表,存在访问某一阶段数据的需求,则需要考虑将日期字段作为主键起始位置或索引,避免因无法利用日期字段而扫描全表。

        7.历史数据的备份与清理

        核心系统为实时交易系统,数据量的大小直接影响着系统整体运行效率特别是批处理的效率。在系统设计之初,应将历史数据的备份和清理功能作为一个重要的非业务性需求进行考虑,周期性地将历史数据自动归档和自动清理,可有效地减缓生产数据不断增长给系统带来的数据存储压力,并保持较好的处理性能。

五、结束语

        本文阐述了核心系统日末批处理优化所采用的分析和解决方法,这些方法在实践中取得明显的效果,使得华夏银行核心系统日末批处理性能提升显著。同时,通过实践,我们也认识到批处理设计的重要性,并摸索总结出了批处理设计时需要重点考虑的内容。希望这些实践经验可为银行同业进行核心系统批处理设计或优化提供借鉴和参考。

(文章来源:《金融电子化》杂志)
 

扫码即可手机
阅读转发此文

本文评论

相关文章