商业银行借记卡系统分布式数据库改造创新研究与实践
当前,随着银行数字化转型战略的深入推进及创新技术的持续应用,核心系统迁移改造及分布式创新应用已成为必然的趋势。这是一项极具挑战性的工程,对数据库的一致性、高可用、高性能、高扩展能力,以及数据安全性、稳定性、业务连续性等方面提出了更高的要求。目前,金融级分布式数据库系统已逐步在我国商业银行成功落地,并在部分业务中得到了推广与应用,已初步具备了替代传统商用数据库的能力且运行状况良好,形成了一套可推广、可复制的技术路线。本文立足华夏银行实践,对其在借记卡系统架构设计、分布式设计、数据库迁移、适配改造、运维保障等全方位的创新研究与实践工作进行总结,以期为商业银行借记卡系统分布式数据库改造提供借鉴。
一、打造安全高效的高可用架构
借记卡系统是商业银行重要的金融业务系统。以华夏银行借记卡系统分布式数据库改造项目(以下简称“数据库改造项目”)为例,本次改造的业务连续性目标为同城RPO=0、RTO<60秒,异地RPO<1分钟、RTO<10分钟。这就要求同城双中心数据零丢失,数据恢复需要在1分钟内完成,异地允许最大1分钟内数据延迟,且恢复要在10分钟内完成。
按照上述目标要求,结合所选用的分布式数据库支持的部署模式和高可用技术,华夏银行为改造后的借记卡系统设计了两地三中心同城双活、异地灾备的整体高可用架构(如图1所示)。
华夏银行在北京同城两个数据中心部署双应用集群,采用对等双活设计,使其均可接入业务流量。数据库采用跨中心分布式部署架构,同时设计了仲裁节点,实现数据库跨中心双活。异地灾备中心采用单中心分布式部署设计,与北京中心之间通过流式复制技术进行数据同步。
为充分保证借记卡系统的联机处理能力,华夏银行将借记卡系统联机交易处理与数据批量处理在应用和数据库层面进行了解耦。数据批量处理通过单独搭建数据克隆区实现,形成生产业务区及数据克隆区两个不同业务功能区的系统架构。数据克隆区采用同城双中心部署方式构建数据批量处理集群,通过数据库复制技术将数据从生产业务区克隆到批量处理数据库。
二、分布式设计突破性能瓶颈
为充分发挥分布式数据库高并发、高扩展、高性能的优势,结合借记卡业务场景特点,通过针对性的分布式设计,借记卡系统将数据拆分到不同的节点,提升了系统并发访问能力与计算能力。上述设计主要体现在以下三个方面:
一是分片规则。选择具备业务特性且离散性高的卡号等业务要素作为分片键,并采用了分布更加均匀的HASH分布方式,单列即可保障数据分布均匀。此外,部分公共表(如参数表等)则采用全局表方式,避免了跨分片表关联操作。二是SQL语句改写。在SQL语句中优先选择分片键作为查询条件,并采用分片键作为多表关联查询条件,以实现每个节点间独立计算,最大限度地发挥算力优势,规避了跨节点数据传输。三是分布式事务优化。基于业务场景选择最优分片键,尽量将事务限制在一个分片,有效地规避了分布式事务,将分布式事务控制在了5%以内。
改造后,通过利用分布式数据库的分片能力分散性能压力,有效提升系统承载能力。实测表明,改造后系统TPS提升为原来的1.5倍,效果显著。
三、立足自研平台解决数据库迁移痛点
异构数据库对象迁移是本次改造所面临的重大技术挑战,它不仅包括表、索引、视图等有形对象的迁移,也包括业务所使用的SQL等语句的适配。
为解决这一问题,华夏银行自研了iGo数据库智能迁移平台(以下简称“iGo平台”),首先采集源库对象的元数据,经过映射转换后,再遵循目标数据库语法生成相应的DDL,实现对象的迁移。同时,iGo平台还通过自研引擎,实现了自动收集业务代码中的所有SQL语句,并自动转换为目标数据库语法的功能,极大地减少了改造工作量。
确保两个不同的数据库在不同的特殊环境下(如字符集、特殊对象、硬件配置等)平滑、安全、完整地将数据迁移到目标端是本次改造面临的另一个技术挑战。例如,借记卡系统数据在字符集的使用上较为特殊,迁移到分布式数据库后需要对其中部分特殊字符做数据清洗,且需要高效、准确地完成迁移前后的数据一致性比对,这些个性化需求均已整合在自研的iGo平台之中。
iGo平台大大降低了数据迁移的难度,同时只需反转数据库方向,即可轻松实现数据从分布式数据库到传统商用数据库的反向迁移,为项目改造提供了一个安全可行的紧急回退方案。华夏银行iGo平台数据库迁移全流程如图2所示。
四、细致全面的适配改造
数据库替换给应用带来的影响是全方位的,不仅体现在数据库侧,也同样体现在应用侧和数据库厂商侧。因此,适配工作也需要在以下两方面全面展开。
在数据对象适配方面,针对分布式数据库与传统商用数据库的差异进行分析后,对于不支持的数据类型如DATE、ROWID、UROWID、BFILE等进行处理;根据分布式数据库对索引的部分限制,修改建库语句里的索引类型;对不支持的函数和关键字如ROWNUM、NVL等也进行处理。
在应用适配方面,数据库改造项目面临的主要问题是借记卡系统应用本身采用C语言开发,而分布式数据库却未提供相应的C语言预编译工具。为尽量避免应用改造,在对ODBC、ECPG等多种方式进行研究、测试和验证后,最终采用了ODBC方式连接数据库。通过应用数据库连接层屏蔽适配改造细节,使得业务功能实现对数据库替换无感知,在极大地降低工作量和改造规模的同时,也提升了系统应用对不同数据库的适配能力。
自主可控分布式数据库起步较晚,在产品成熟度、兼容性、易用度等方面有待提高。在改造过程中,结合数据库改造项目的实际情况和发现的问题,数据库厂商也同步进行了诸多优化和改造适配,进一步助力该项目的顺利推进。
五、安全可靠的一体化运维保障
以业务为中心的数字化运营是未来发展趋势。因此,将分布式数据库的运维管理纳入华夏银行现有数字化运维管理平台也是数据库改造项目的重点。
分布式数据库本身包含一体化云管平台,且该平台提供了相应的API接口,通过使用相关接口,华夏银行自主研发了“魔方”工具用于日常问题定位与故障处置,并将结果上传至华夏银行现有平台进行综合分析,实现了与现有运营体系的连接。为方便运维管理,在“魔方”工具中还研发了一键式日常巡检、一键式故障定位、问题应急处置、日常运行报表总览等几大模块,全面涵盖了分布式数据库运维管理的各个方面。
同时,备份恢复管理也是运维保障的重中之重。从技术上来说,数据库改造项目利用数据库提供的物理备份能力,采用了分布式并行技术,可以快速地将整个集群的数据以数据库内部格式进行备份,并可在同构数据库中恢复整个集群的数据,实现了极高的备份恢复性能。具体备份策略的制定则结合借记卡业务的特点,最终针对结息日、年末等特殊时点,以及单日等常规周期分别制定了手动备份、自动备份等不同的备份策略和备份数据保留期限。此外,数据恢复也按需进行,实现了恢复到实例和恢复到时点两个粒度的控制。
核心类业务系统实现基础软硬件全栈自主可控是一项极具创新和挑战的工程,数据库的迁移改造更是其中重要的一环。数据库改造项目的攻关成果,不仅为华夏银行后续其他核心类系统的数据库迁移改造指明了方向,也进一步明确了具体的实施内容和步骤,形成了一套完整可复制的实施方案。
数据库改造项目的实施也起到了良好的标杆作用,为其他商业银行提供了可参考和借鉴的可行方案。在实现迁移改造目标的同时,也提升了自主可控分布式数据库的稳定性与成熟度,完善了数据库生态建设,促进了相关数字产业发展。