关于分布式大数据量迁移实践

2024-03-18

来源:BanTech智库

作者:中国工商银行软件开发中心广州开发三部

 

金融业务数据作为银行信息系统的重要资产,是银行系统运行的基础,以及银行分布式系统转型升级的关键,因此如何高效、准确、完整、可靠地实现旧系统海量金融业务数据到分布式平台数据库的数据迁移是分布式转型的基础和核心,如何保障异构金融业务数据迁移后数据服务的连续性、准确性和稳定性是分布式转型数据移行的重点和难点。为进一步深化分布式系统的建设,完善分布式平台账户体系的合理布局,中国工商银行软件开发中心通过“自研+开源”的策略,完成了新一代借记卡系统的海量数据迁移工作,为同业分布式系统转型海量数据移行提供了一种可行的实践方案。 

 

一、现状分析

作为个人零售领域的核心业务,个人借记卡金融数据是各商业银行进行业务创新、精准营销及精细化管理的着重发力点。该领域业务体量大、类型多、数据复杂度高,极大地制肘了各金融机构的IT架构创新,特别是在分布式架构转型中,涉及大量的异构数据迁移同步,可以说谁能高效、准确地完成数据迁移,谁就能抢占分布式转型的先机。为应对互联网金融、大数据和人工智能等新技术的纵深发展,各商业银行也在构建支持业务成长、松耦合、高可用、易扩展的分布式数据迁移方面进行了一定的尝试。建设银行金磐石提出借助数据复制的方式实现旧系统数据以准实时的方式复制到开放集中式数据库的下移方案,该方案主要适用于主辅数据源的同步,同时局限于开放集中式数据库,不适用于分布式存储的场景[1]。上海人力资源与社保信息中心王刚等人从数据的迁移管理角度出发总结了在不同应用场景下的数据迁移方法,并比较不同方案的特点[2]。河海大学徐燕等人采用编程方法实现了异构关系型数据库之间的迁移[3]

以上研究都是从不同角度、不同应用场景出发对传统平台数据迁移相关问题进行研究的,但随着数据的爆炸式增长,针对大数据量数据的异构数据源的迁移与管理上的研究较少。巴西圣若昂联邦大学的Rocha等人提出一个从关系数据库迁移到NoSQL数据库的框架NoSQLayer,框架将关系数据库中的元信息(列名、类型、索引等)与数据存储在NoSQL中,查询时在应用与关系型数据库之间创建一层代理,经代理重定向转换到 NoSQL 数据库查询,该框架只是具体实现了MySql到MongoDB,在查询方面每增加一种数据库就要生成一种相对应的代理,通用性不够强[4]。华东师范大学的黄萍等人提出一种基于Java和XML跨平台数据迁移的设计与实现,但此方法未存储原数据库的元信息,不支持结构发生变化的情况[5]

针对现有迁移方法存在的缺陷,中国工商银行软件开发中心在进行分布式平台建设的过程中,采用“自研+开源”的策略,借助旧系统集中库的优势,根据平台元数据结构,并行生成数据移行文件结构;借助分布式平台系统特有的分库、分表算法,实现大数据移行文件的拆分和重组;借助DB2的日志消息捕捉机制,通过开源的kafka消息同步机制,搭建平台分布式准实时业务的多级消息同步模型,实现异构的DB2数据到MySql库的增量数据的有效同步。为监控移行的效果,系统自动建设以表维度的数据核对仿真比对系统,按照元数据粒度进行主辅数据源的勾稽,并定时输出差异数据,实现异构数据源迁移的质量监控,保障迁移数据的准确性。 

 

二、迁移策略

个人借记卡金融业务作为工商银行第一批分布式平台建设的试点研究应用,参与我行前期业务建模的创新改造,通过业务领域、业务活动、业务价值流的分析,构建了有别于旧系统的账户体系,因此本期个人借记卡数据的移行,不仅需要将旧系统的存量数据迁移到平台,还需要同步进行数据架构的转换和迁移,整个移行涉及个人介质、协议及账户等数十张平台表的数据移行,单表最大数据量超过亿,总数据量超过百亿,移行的数据量大、难度高。为有效提升整体的移行效率,本期数据迁移的策略采用上下协同、优势互补,新旧隔离、安全生产,提前部署、快速响应的迁移策略,完成本次数据迁移。

 

1.上下协同、优势互补

充分利用各系统的优势,采用上下协同的移行策略,旧系统按照迁移后的数据格式进行数据转换和数据生成,充分利用旧系统高度集中的优势,对路由信息进行关联,统一按照账户维度进行业务数据的划分,形成统一标准、统一出口、统一格式的标准数据源。借助旧系统高运行效率的优势,采用并行分批的技术,实现多批次并行移行数据下载处理,提升旧系统源数据的高效下传。平台借助分布式的优势,对旧系统下传的数据文件进行拆分和解析,并按照平台分库的规则进行离散部署,借助分布式的分而治之的策略,实现多数据表、多分库的并行加载机制,实现海量数据的快速加载。

 

2.新旧隔离、安全生产

个人借记卡数据移行作为工商银行个人业务平台化建设的基础工程,严格按照新系统、旧系统的隔离部署,确保移行数据校验完成前,不引流到新系统中,以保证对外服务的生产安全。在本次的数据移行过程,迁移的业务数据统一按照新增移行作业和移行业务数据临时表的方式进行加载和存储,数据通过自研的拆分工具按照预期的数据分布进行物理拆分,减少大数据量文件对分布式平台批量容器、网络的冲击,对拆分后的数据文件,自动进行数据总量、抽样的数据进行校验、复核,确保每个移行的步骤准确无误,迁移过程按照半自动的方式实现迁移流程的安全、有序执行。

 

3.提前部署、快速响应

个人借记卡数据移行目的是建设以平台为基础的分布式系统,数据源的准确性将直接影响到平台业务的功能开办。为确保新旧系统业务能正常衔接,系统切换安排在停机版本进行;为保障移行的准确性和数据安全性,项目组对迁移工作进行提前部署;为预留充足的时间对数据进行迁移和核对,项目组采用增量补充的方式,实现投产移行后的数据准实时同步;借助系统移行自动、半自动的数据核对机制,快速地发现问题,定位问题和解决问题,确保投产期间能明确业务引流的策略。 

 

三、实施路线

 

1.存量数据移行

参照第三章的迁移策略,提出旧系统移行、统一格式转换、数据拆分和数据加载的存量数据加载的迁移方案,通过旧系统与分布式平台系统的上下协同、优势互补的实施方式完成移行数据的下传和加载,具体如图1所示。

图1 存量数据迁移总体方案

 

(1)旧系统数据移行

本次移行涉及个人借记卡、账户和协议数十亿的数据,数据复杂度高、数据量大,数据间的交叉影响多,为确保能重复移行,并有统一的路由信息,旧系统数据移行需支持指定日期生成文件,且统一按照账户路由字段对其他表信息进行补齐。借助旧系统分批并行的机制,通过相同表间的多批并行处理,实现旧系统存量数据高效生成。文件生成后,系统同步启动批量作业进行数据的自动勾稽核对处理,核对通过后,采用旧系统磁盘共享技术对数据文件进行推送并下传给下游应用,同时备份旧系统下传的原始文件到磁带机,以备后续应急使用。

(2)数据格式转换

旧系统生成的数据存储格式与分布式平台的数据存储格式存在一定的差异,特别是针对中文字段的存储,旧系统统一按照EBCD码存储,而平台无法针对这类字段进行有效的识别,为保证分布式平台能正常识别并有效加载此类数据,本期的迁移方案中复用统一数据交换平台对旧系统下传的数据文件进行转码处理,借助统一数据传输系统的并行译码拆分资源,接收旧系统同步推送下来的数据文件,并自动译码为平台可识别的码制(ASCII码),实现旧系统数据码制与平台数据码制的有效桥接,降低本期移行的复杂度和难度,提升数据格式转换的效率和准确性。

(3)数据文件拆分

分布式平台应用采用分表分库的数据部署策略,为提升分布式数据移行的效率,本期移行在分布式批量外围新增了分布式数据文件拆分层,将旧系统下传的集中部署的数据文件,拆分成分布式多库、多表的分布式数据文件。通过部署分布式文件拆分工具和核对勾稽工具,构建形成分布式数据文件的自动转换流程。借助分布式路由规则和分布式数据表的元数据信息,文件拆分工具在本地进行快速的水平、垂直拆分,形成分库、分表后的明细文件,具体如图2所示,平台数据文件1/2/3分别拆分成库1->N的数据小文件。借助分布式数据文件勾稽核对机制,数据核对工具对拆分前后的数据文件记录总量、数据文件格式、数据文件的数据分布进行自动核对,核对通过继续后续分布式平台数据加载的流程。

 

图2 存量数据拆分示意

 

(4)数据文件加载

基于工商银行自研的分布式批量框架进行开发,批量数据移行作业支持定时、手工、依赖等不同形式的批量运行模式,通过批量作业依赖调度控制,确保批量移行按计划实施;支持批量作业的主动监控和快速通知,通过执行的运行监控、批量运行监控及异常监控,实现对批量移行作业的全方位管控;支持批量作业的运行结果查询、作业运行参数的动态调整功能,实现分布式批量的有效运维;支持作业运行节点的自动、被动负载,通过各个库作业拉取、加载各自数据分库的数据文件,实现分布式批量移行作业的合理并发,提升分布式批量数据文件的加载效率。通过分布式批量作业依赖关系,系统自动控制数据加载后,自动开启数据勾稽作业,通过对数据库表数据表间的一致性、完整性及新旧数据源的数据关联性勾稽检查,实现移行加载数据的快速、准确核对。

 

2.增量数据移行

为确保数据移行的业务连续性,存量移行统一操作临时表的方式进行提前加载,通过提前投产、增量补齐的方式实现增存量数据的平滑过渡。为提升分布式系统旧系统数据同步平台的效率,增量数据移行统一采用二级消息队列进行准实时同步。借助旧系统DB2的日志消息捕捉机制,通过开源的kafka消息同步机制,搭建平台分布式准实时业务的多级数据同步模型,实现异构的DB2数据到MySql库的增量数据的实时同步,整体的同步分为5个阶段,具体如图3所示。

 

图3 增量数据准实时同步流程

 

(1)旧系统数据捕获阶段

依据DB2的数据库变更日志,实时数据复制系统自动收集旧系统数据库的相关表操作,并将变更内容以文本形式保存到本地库,利用数据变更的时序标识数据同步的信息有序性,通过设置监控的数据操作表、数据操作类型及数据变更字段,实现对旧系统数据变更的实时监控。

(2)一级队列离散阶段

旧系统表变更消息统一按照表的格式进行存储,但是数据存储可根据数据表唯一键值进行分片存储,根据预设的消息分片数量,实现旧系统表变更数据均匀、离散地保存到平台一级消息队列中。通过该阶段,实现旧系统变更数据向分布式消息提的转换和存储。

(3)数据路由转换阶段

旧系统存量数据移行中,数据分布统一按照业务指定的字段进行静态的离散分布,为保证业务数据的延续性,增量同步的数据需与存量的数据分布保持一致,因此增量数据同步时不能采用存量数据移行的方式进行入库,需通过数据路由转换的阶段,重新还原出数据在存量数据所在的分库,实现增量数据的重分布;

(4)二级队列散列阶段

根据数据路由转换的结果,应用路由层对消费的数据记录进行二次离散,通过表、路由set及记录唯一键等要素,形成多维度的二级消息队列,实现消费集群数据规范、统一、均匀、高效的分布。

(5)平台数据加载阶段

基于分布式系统的技术架构,应用新增数据同步的后台进程,系统通过不同的表、不同分片、不同分库的并发消费线程,实现对二级队列消息的快速消费,并根据消费的数据实现旧系统变更记录到平台分布式系统的准实时同步。

增量同步作为后续数据同步的主要方式,在存量数据同步完成到增量同步开始前,会存在一定的数据积压,因此在首次增量移行前需要设置相对安全的增量同步保存周期,待后续增量同步开始后,同步创建消息监控线程,实时监控同步消息的处理进度,若存在消息延迟,及时报警并通知。

 

3.数据移行验证

为确保整个移行工作的快捷、准确,整个移行过程中安排了大量的移行结果的验证流程,通过数据总量验证、数据质量验证和数据关联性验证等步骤,保障数据移行的正确性,并借助监控、预警平台实时反馈到运维、开发人员中,提高数据移行的数据问题的定位和识别。

(1)数据总量验证

借记卡数据移行的步骤复杂,涉及旧系统、数据译码、数据拆分和数据加载等多个系统协作的过程,极大地考验了系统数据传输的准确性。为确保数据量的准确性,系统在每个处理环节都有数据总量的核对和验证。在旧系统,进行表与数据文件记录数的核对;在统一数据交互平台,进行旧系统下传数据与译码后平台数据文件记录数的核对;在数据拆分平台,进行译码后的数据文件与拆分后的分布式数据文件记录数的核对;在分布式平台中进行分布式数据库与平台分布式数据文件记录数的核对,实现处理节点内、节点间的数据总量勾稽。

(2)数据质量验证

数据质量是分布式平台数据迁移成败的关键,特别是在数据格式有发生变化的数据移行过程中,数据质量的验证显得尤为重要。为提升数据质量的验证结果,本期借记卡数据移行通过统计、抽样的方式进行数据质量的验证,如标准数据字段是否具有非标准的数据字段,是否存在非空字段出现空的情况,是否存在数据含义与旧系统不一致的字段,通过预先设定的结果比较,确定数据质量验证是否通过,实现移行数据的快速验证。

(3)数据关联性验证

个人借记卡业务是个人金融业务的核心业务,涉及借记卡、账户及协议多个维度的表数据,数据间往往存在相互关联,因此系统主动进行数据关联性的校验,如卡、账记录数是否一一匹配等,通过这种关联性的验证结果,自动地核对迁移后的关联数据的准确性,确保数据源切换后的业务稳定性。

 
 
 

 

 随着分布式技术的不断成熟,金融机构向分布式自主转型是实现科技自立自强的必经之道,在没有有效参考经验的情况下,工商银行软件开发中心通过“自研+开源”的方式探索出适合大数据量的银行数据迁移方案,为分布式全面转型奠定了数据基础。未来,软件开发中心将不断依托自身转型实践的经验,结合业界先进的分布式技术,优化分布式系统下的数据迁移方案,提升分布式数据迁移的效率,为金融同业提供有效的实践经验,推动我国金融行业的分布式转型快速发展。 

 

参考文献:

[1] 金磐石.分布式转型中的主机下移实践[J].金融电子化, 2017.05 : 48-51.

[2] 王刚, 王冬, 李文等.大数据环境下的数据迁移技术研究[J].微型电脑应用, 2013, 30(5):1-3.

[3] 徐燕, 梁正和.信息系统中的通用数据迁移工具的研究与设计[J].计算机与现代化, 2010(6): 156-158.

[4] Rocha L, Vale F, Cirilo E, et al.A framework for migrating relational datasets to NoSQL 1[J].Procedia Computer Science, 2015, 51(1): 2593-2602.

[5] 黄萍, 潘荫荣, 胡幼华.基于Java和XML跨平台数据迁移的设计与实现[J].计算机工程, 2005, 31(17): 74-75

-END-

前期精彩原创推荐(点击图片进入阅读):

这是科技创新最好的时代,这是属于我们每个人最好的时代,关注“BanTech智库”,专注银行科技发展,探索无界金融生态!

 

 

收藏