随着互联网的不断发展和逐渐普及,各行各业也纷纷选择了上云之路,腾讯云数据库致力于运用领先技术,助力企业上云,分布式数据库TDSQL就是部署在腾讯云上的一款具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性的数据库产品,《图说TDSQL》栏目将以图文结合的形式,带大家了解TDSQL的方方面面。
本文将为你详细解读,腾讯云TDSQL携手张家港农商银行的“破壁之路”,共同促进银行传统核心数据库首次实现国产化。
内外剧变的背景
银行传统核心系统被国外垄断
虽然在目前来看,国外的集中式数据库已经逐渐跟不上时代的脚步,但对于银行来说,试错的成本是难以承担的,任何一条错误数据造成的损失都无法估量。银行数据库系统被外企垄断超过99%。数据库的复杂程度比拟操作系统,作为基础性软件数据库对成熟度有着极高的要求,这意味着需要较长的研究周期和测试才可以进入市场,这也是为什么国内商用数据库领域长期被国外企业所垄断。
国产数据库得到了长足发展
2002 年,腾讯技术团队选择完全开源MySQL 构建数据库体系,为了解决计费等公司级敏感业务高可用、核心数据的零流失、核心交易的零错账等问题,腾讯从 07 年开始自研了一款数据库产品,这也是 TDSQL 的前身,这款数据库在当时很好的支撑了 09 年的开放平台浪潮。随着腾讯开放合作的发展扩大,行业场景越来越多,这款数据库无法很好的为合作伙伴提供服务,因此从 2012 年开始,由腾讯内部业务适配而衍生的自研数据库 TDSQL 正式诞生。随着不断地迭代和发展,如今的TDSQL 已经完美解决了金融等系统中高可用、数据一致性和水平伸缩等问题。
艰难的破壁之路
面临的挑战
系统结构特殊且复杂,数据迁移要求苛刻。通常行业内银行业务分为传统业务和互联网业务,并各有一套核心系统,两者的相对独立性较大,但与行业一般情况不同的是,张家港行一套核心系统支撑了全行的传统业务和互联网业务。本次迁移的核心系统的数据量在 TB 级,包括了账户、账目、流水、账单、日志等数据。张家港行系统建设方长亮科技表示其核心系统主要分为两大部分,一个为交易子系统,总共有 70 多个结构,覆盖银行卡、资金管理等等;另一个为会计子系统,主要是资金的交易分离、清算总账。核心系统不仅本身系统结构复杂,且还与各个系统都有联系,因此数据库迁移十分复杂、而且难度大。
解决方案
1.两个版本同步开发
在系统建设过程中,张家港行联合腾讯云及系统建设方长亮科技,充分结合银行传统业务与互联网业务的场景差异,对业务逻辑进行重新设计,共同完成新一代核心系统应用兼容性改造和数据库升级优化。三方还共同制定了TDSQL和集中式数据库数据准实时同步的策略作为兜底方案。最终,在充分的技术验证和周密的实施方案保障下,张家港行搭建出一套具备高可用和强一致等特性的数据库架构。
数据库采用分片“一主三备”的模式,保证主节点故障时可以在40秒以内自动切换到备节点并恢复业务;完善的全局分布式事务设计,也能够完全避免发生错帐、乱账、账不平等问题。
2.解决兼容问题
兼容性差异,包括两部分:Oracle 生态与 MySQL 生态、集中式架构与分布式架构的差异,如何解决这个问题呢?针对 Oracle支持的语法但 MySQL 不支持这个问题,TDSQL 做了大量对 Oracle 语法兼容性的优化。对于一些不太适合分布式场景下的使用特性如:存储过程、视图、触发器等,业务之所以用到这些特性,是因为将很多业务逻辑也放在了数据库中,这一定程度上导致了扩展性不足,TDSQL 团队与银行方、核心系统开发商长亮科技进行了仔细的分析与评估,将更合适放到应用层的部分逻辑上移,实现了更为彻底的分布式架构,极大提升了整体的水平扩展性。
3.数据同步模式
设计多源同步解决方案,保证TDSQL到其他异构数据库的导入导出。当因为某些原因需要更换TDSQL,通过数据同步方案可以轻松将数据迁出,TDSQL支持业内标准格式的数据订阅,方便数据的导入导出。同时还引入Oracle灾备方案,将Oracle作为备胎和TDSQL保持实时同步关系,极端情况下可以将TDSQL切换到Oracle,让银行更有信心。
4.完善分布事务机制
TDSQL的分布式事务方案基于两阶段提交,在MySQL原生XA事务的基础上做了大量优化,使其满足分布式事务的使用场景,同时对事务在两阶段期间各类异常场景做到了充分考虑,提供全局视角的分布式死锁检测,清晰查看多个分布式事务之间的锁等待关系,方便开发排查。此外整个设计完全去中心化,不存在单点瓶颈问题,整个事务对业务完全透明,业务只需要像常规事务那样使用即可,因此十分适应银行类的金融场景。
5.两大系统辅助运营
腾讯云提供的“赤兔”和“扁鹊”系统为数据库实现自动化运维提供了丰富的工具,极大地解决了困扰传统集中式数据库运维效率问题。
“赤兔”平台能提供上百项监控指标的展示,结合灵活丰富的告警策略提供风险预警;“扁鹊”系统是 TDSQL 提供包括数据采集、实时检测、自动处理、性能检测与健康评估、SQL性能分析、业务诊断等多种智能工具的集合,采用模块插件化无缝对接各种数据库,可以自动抓取存在性能问题的SQL,并进行智能分析提供索引优化建议,将数据库的性能问题及时扼杀在萌芽当中。在扁鹊的帮助下,DBA可以从日常繁杂的数据库运维工作中解脱出来。“赤兔”平台从管理员视角提供TDSQL的全部运维功能和上百项数据库状态监控指标的展示,让数据库管理员日常90%以上的操作均可通过界面化完成,同时更方便定位排查问题。
“赤兔”和“扁鹊”这一套组合拳既满足高星级业务的精细化运维,又能轻松应对大量的普通数据库运维需求,更好地帮助用户降低运维成本。
破壁过程
1.外围试点
18 年年初,腾讯云首次接触到了张家港行,当时张家港行的一个缴存水电费的外围系统想要尝试国产分布式数据库,经过若干轮 POC 测试最终选择了 TDSQL,这种外围业务尝试国产分布式数据库并不算稀奇,但是大多数的银行对国产数据库的尝试也仅限于此。
2.一年验证
2018 年 8 月左右,张家港行准备对核心系统进行改造,原计划数据库采用国外某商用数据库,张家港行做了一个大胆的决定:同时开发两套新核心业务系统,一套基于国外某商用数据库而另外一套则基于 TDSQL,然后进行“内部赛马”,一年之后对两个系统的稳定性、性能进行对比测试,根据测试结果再决定使用哪套。最终,在充分的技术验证和周密的实施方案保障下,张家港行搭建出一套具备高可用和强一致等特性的数据库架构。数据库采用分片“一主三备”的模式,保证主节点故障时可以在40秒以内自动切换到备节点并恢复业务;完善的全局分布式事务设计,也能够完全避免发生错帐、乱账、账不平等问题。
3.最终胜出
经过整整一年的改造,无论是从性能成本,还是易用性,分布式数据库都表现出明显优势,进而最终新核心系统采用了 TDSQL 分布式数据库,而之前采用集中式数据库的核心系统则保留为灾备系统。
落地影响
性能
根据银行披露的数据,银行传统核心系统完成分布式改造之后,查询交易100毫秒之内,高频率交易300毫秒,贷款结息3分钟,20 秒内可以完成 1 万笔批量代发代扣业务,日终跑批14分钟,存款结息耗时 11 分钟,同时数据库负载均保持在10%以下,目前这个性能已经完全满足张家港行未来十年的业务量。
成本
新核心系统在硬件层面全面采用x86服务器,取代传统商用数据库所需的大型机、小型机,成本优势明显。数据显示,张家港行采用腾讯云TDSQL分布式数据库架构后的硬件成本,只有传统架构成本的1/5甚至更低。
新方向
这个案例像我们证明了在银行核心系统中,长期被国外所垄断商用数据库是可以被替换为国产分布式数据库的。不论是对于银行还是腾讯云来说,这都是一个具有代表性的案例,未来可能会出现更多类似的案例,而银行和国产数据库的发展也有了更多的可能。