作为国民经济的命脉和枢纽,金融行业对底层数据库的能力要求正在不断提高。在众多要求中,数据一致性无疑是重中之重,即数据不能出错,最好还能提高并发效率。
TDSQL采用MC(轻量级GTM)+全局MVCC的全局读一致性方案。如果只使用全局事务管理器GTM,除需维护全局序列外,还需要维护全局的事务冲突,这个过程的通信量及与GTM之间的通信频率都会成为瓶颈。TDSQL引入全局MVCC,将每个分片上MVCC版本和全局GTS做映射,通过全局GTS和全局的MVCC映射来管理每个分片上的镜像,进而实现全局的MVCC,从而极大减少和GTM 之间的通信量及避免全局的冲突事务检测。
上述方案确保了TDSQL无任何数据异常,且具备高性能的可扩展性,解决了分布式数据库在金融级场景应用的最核心技术挑战,使得国产分布式数据库实现在金融核心系统场景的可用、好用,进而推动国产基础软件产业化。基于此,TDSQL是当前国内率先进入国有大型银行核心系统正式投产的国产分布式数据库。
在WOT全球技术创新大会2022的腾讯云数据库专场中,腾讯云数据库专家架构师汪泗龙分享了金融级分布式数据库TDSQL的一致性技术及应用实践,以下为详情内容:
一、TDSQL产品介绍
1.1 发展历程
腾讯云数据库TDSQL诞生自腾讯内部百亿级账户规模的金融级场景。从内部自研蜕变成规模化商业产品,TDSQL的发展历程可分为四个阶段:
第一阶段是2007-2009年,当时开源的MySQL已经越来越难以应对腾讯爆发式增长的业务,研制服务于计费、定位于金融场景的分布式数据库TDSQL逐渐提上日程。
第二阶段是2009-2012年,腾讯进入开放时代,海量业务群雄并起,以开心农场等为代表的众多亿级应用比比皆是。TDSQL逐渐在性能瓶颈、数据可靠性保障、高可用等“不可能三角”的技术难题上取得突破。
第三阶段是2012-2014年,云计算兴起,数据库上云、多租户、标准化成为标配。腾讯云数据库的能力逐渐外溢,TDSQL因其优异的性能已经拥有众多外部客户。在经过公有云的海量数字化、大规模高并发业务场景打磨以及内核级的深度自研优化后,TDSQL逐渐形成标准化的国产分布式数据库产品,包括金融级分布式TDSQL、计算与存储分离的云原生数据库TDSQL-C 等产品,获得了云原生技术、多租户隔离能力。
第四阶段是2014-2020年,数字化升级成为行业趋势,TDSQL深入金融核心,走向大规模应用阶段,比如作为微众银行分布式数据库底座承担核心作用,帮助张家港农商银行上线新一代核心业务系统,助力平安银行打造信用卡“A+”新核心系统等等。
目前,TDSQL已服务金融、政务、工业制造等行业超过50万家客户,帮助20余家金融机构完成核心替换,国内TOP 10银行机构服务占比超过60%。同时TDSQL也支持了第七次全国人口普查,以及腾讯会议、健康码等关系国计民生的数字化应用,有力推进国产数据库的技术创新和发展。
1.2 核心特性
随着云计算和数字化业务的发展,针对新型企业级信息化以及实现国产化的转型升级需求,TDSQL逐渐形成6大核心特性:
- 数据强一致性:确保多副本架构下数据强一致,避免故障后导致集群数据错乱和丢失。
- 金融级高可用:确保99.999%以上高可用;跨区容灾;同城双活;故障自动恢复。
- 高性能低成本:软硬结合;支持读写分离、秒杀、红包、全球同服等超高性能场景。
- 企业级安全性:数据库防火墙;透明加密;自动脱敏;减少用户误操作/黑客入侵带来的安全风险。
- 线性水平扩展:无论是资源还是功能,均提供良好的扩展性。
- 便捷的运维:完善的配套设施,包括智能DBA、自助化运营管理台。
1.3 产品架构
TDSQL的架构主要分为三层。最上层是管理层,包含赤兔管理平台、MC以及Keeper。中间层是SQL引擎,可以选择使用TDSQL附带的接入层,也可使用传统意义上的F5等接入层来进行接入。最下层是存储引擎层,即TDSQL内核。
下图是实现 GTM 全局唯一序列的图签。这里是TDSQL在实现分布式事务后在全局一致性读方面的优化点,该插件实现了轻量级的GTM。
二、分布式事务处理
事务处理面临的挑战有两点:保障数据正确性及提高并发效率。这两点都是事务处理的关键点,如果为了提高并发效率而牺牲数据正确性,就背离了初衷,反之也是如此。为了解决这两个问题,我们需要用到很多技术,比如读写分离、物理时钟、时间戳机制、GTM等。
2.1 分布式事务模型
不管是分布式数据库还是应用,都是在分布式事务模型下,进行分布式事务的实践和开发。对数据库而言,常用的分布式事务模型是XA模型;对应用而言,主要是TCC、SAGA、AT等模型。