一款的优秀国产分布式数据库应该表现如何?尽管你可能没有察觉,但领先的数据库产品已经在产业化的道路上越走越远、越走越深入,助力行业数据库实现全面自主可控。
日前,CCF主办的2019 中国计算机大会(CNCC 2019)在苏州落下帷幕。会上,腾讯金融级分布式数据库TDSQL负责人潘安群分享了TDSQL的15年研发演进历程。
据了解,在十数年的积累打磨中,TDSQL持续地优化分布式、高可用、高性能等特性,以及不断完善满足客户的需求。而统计数据显示,作为一款自主可控数据库,TDSQL持续在行业保持领先,目前客户已经超过500家金融政企机构,并且在国产数据库的基础技术研发和产业化等领域屡屡实现率先突破!
走在技术浪潮的前端
腾讯是较早开始投入金融级分布式数据库自主研发的企业。从2004年开始,基于腾讯计费、财付通等复杂业务场景,腾讯以“开源定制化 自研”为策略,推出了TDSQL,以解决金融系统中高可用、数据一致性、水平伸缩问题,助力我国产业核心技术自主可控、业务技术数字化转型创新。
早在2009年,腾讯TDSQL就已经实现了系统7*24小时高可用、高数据一致性和弹性扩容等功能。目前,腾讯TDSQL已具备了强一致、高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,以及较完善的产品服务体系。除了提供稳健高效的数据库迁移服务TDSQ多源同步解决方案,2018年,TDSQL还实现了原创性提出的全面地解决读一致性的算法,使得分布式事务的一致性和分布式系统的一致性统一在一起。而在业界颇为头疼的云数据库运维问题上,TDSQL还提供了两大利器:“赤兔”运营管理平台和“扁鹊”智能DBA诊断系统。
而在历史时态数据的处理方面,TDSQL与中国人民大学合作,创新性地提出并实现了全时态数据库系统(T-TDSQL)。该系统在保证OLTP性能的前提下,提供了轻量级的全时态数据管理功能和全时态数据的事务处理能力,以及集当前态数据于生产系统、集历史态数据于分析型系统的集群架构,构成了全时态数据的完备解决方案。2019年,该研发成果被国际数据库学术顶会之一VLDB收录。
TDSQL Inside:从腾讯的分布式数据库能力到行业的能力
目前,TDSQL的用户已经覆盖了金融、政务、物联网、智慧零售、互联网等行业,拥有大量的分布式数据库最佳实践。
2014年,是TDSQL关键的一年。这一年,TDSQL正式对外开始商用,第一个外部合作客户就是微众银行。微众银行是国内第一家其核心交易系统以分布式架构来搭建的互联网银行。互联网架构的高可扩展性,使得微众银行的服务能力具备很高的弹性,足以轻松应对普惠金融浪潮。到了2015年末,TDSQL上线腾讯云,标志着腾讯内部金融级分布式数据库能力全面开放。
2019年,TDSQL的一个举措再一次推动了国产数据库助力产业数字化创新的发展。今年,TDSQL成功助力张家港行成功率先将银行传统核心系统由集中式数据库存储改造为分布式数据库存储,打破了该领域对国外数据库的长期依赖。这是在国内银行首次在传统核心业务系统场景下,采用国产分布式数据库。而采用TDSQL搭建的新一代核心系统性能也表现优异:高频账户类交易耗时在300毫秒之内,20秒内可以完成1万笔批量代发代扣业务……而架构成本降至1/5甚至更低。妥妥实现降本增效。
当前,金融日交易量最高3.46亿 的微众银行、大型银行机构中国银行、日均使用量超150万人次的深圳地铁乘车码系统等超过500家金融政企机构,都是采用腾讯TDSQL数据库的服务。
这是最好的时机,也是全新的起点
潘安群表示,国产数据库经过十数年自主可控发展,沉淀了成熟的分布式数据库技术能力,同时,云计算的蓬勃发展为传统行业的业务转型带来了许多新的机遇,这是业务创新与底层技术架构转型升级融合发展的最佳时期。“促进国产分布式数据库发展,同时也将促进我国产业数字化转型发展。而行业应用发展也将为技术创新发展提供新的机遇。当下是产业数字化升级最好的时机,也正是国产数据库发最好的时机。”
而未来,核心技术挑战攻坚、前沿技术生态融合等,在继续推动整个数据库基础技术和工业生态逐步成熟上都是值得我们思考探索的问题。潘安群指出,在自主可控的基础上,同时具备更多未来性创新探索和生态开放交流,才能让技术研发的价值更具有意义,推动国产数据库进一步创新发展。腾讯也将加大投入,促进我国数据库产学研合作,推进国产数据库技术提升和生态完善。
以下是潘安群在CNCC 2019的演讲精要:
大家好,很荣幸今天有机会在这里和各位前辈同行交流国产数据库的发展。腾讯TDSQL是孵化于腾讯内部业务场景的分布式数据库,从2014年开始正式对外商用。
回顾2014年,TDSQL第一个外部合作客户就是微众银行。微众银行是国内第一家其核心交易系统以分布式架构来搭建的互联网银行。互联网架构的高可扩展性,使得微众银行的服务能力具备很高的弹性,足以轻松应对普惠金融浪潮。
而在今年与张家港行的合作,我们认为也是一次国产数据库以及银行科技创新的重要突破。为了完成首次银行传统核心系统的数据库迁移,我们和人民银行、网信办等都经过了多轮的沟通,最终的成功迁移和性能、成本等实施效果获得了大家的一致认可。作为首家在传统核心应用国产分布式数据库的银行,张家港行在获得分布式架构的优势特性的同时,同等TPS下硬件成本仅为传统商业数据库的1/5。
TDSQL演进三部曲
TDSQL前身在2004年开始启动研发,至今已经持续积淀了十数年。回顾它整个演进历程,可以分为几个阶段。
- 互联网开放浪潮的前夕:分布式数据库如何一步步成型
如果大家去充Q币,或者在腾讯业务内消费时,如果金额不对,这将是不可能接受的事情。所以最早从2004年开始,腾讯内部需要做计费业务时,我们当时迫切需要的是数据一致性和系统高可用等性能。
当时,还是互联网IT的早期,少有公司会愿意投入底层技术的研发。而作为一家互联网科技公司,为何不用技术来解决技术问题?于是,从2004年开始,腾讯内部开始基于开源体系MySQL进行研发,以实现高数据一致和系统高可用等,这也是TDSQL的前身。
也是在这样的背景下,TDSQL就逐步诞生了。所以腾讯金融类业务从一开始就没有Oracle,没有“IOE”。
基于MySQL来发展这样一套系统架构,在后来的经历中也验证了,这是一件非常困难的事情,但也验证了当初的巨大投入所带来的技术价值。
最初,我们没有对MySQL本身去做一些优化的工作,更多的是在效率的迫切要求下,结合CAP原理,在应用层去解决这些问题。
后来我们发现,在应用层做工作,解决第一个系统问题时是快速的,但对于后续大规模应用开发时,和业务应用紧耦合的形式难以将这些数据一致性、高可用的解决方案推广到其他业务系统来应用。因为它对于业务层、应用层而言,改造成本太大了,因为在业务快速发展的过程中,业务本身历史包袱越来越重,不太可能要来适应新的架构改造。
需求自然是迫切的,当时业务面临着业务拆分,以及上百台设备集群管理问题,所带来的数据一致性、数据准确可靠性等问题。
因此我们开始考虑,我们必须将这些容灾、数据一致性等逻辑,全部下沉到数据库层面来开发构造,让应用层只需要专注在业务逻辑,而不需要管理容灾等逻辑。
从开发的角度讲,这也是一件相对而言投入更大、难度更高的事情,然而那时大家有预感,我们将会创造一个全新的事物。
也因为这样,对未来事物的好奇战胜了困难的阻碍。2007年的数据库开发中,团队几个人闭关在一个小黑屋里面,开始了疯狂的代码构建,主攻解决计费等公司级敏感业务高可用、核心数据的零流失、核心交易的零错账等问题。
针对金融类业务的特点,TDSQL技术团队目标很明确,包括以下几个要点:
- 数据强一致的要求
- 数据库集群的可用性、稳定性和容灾要求要达到银行标准
- 业务无需拆分超大表,数据库自动拆分
- 接入要简单,老业务改造要小
- 符合并高于金融行业信息安全监管要求
而在解决这些问题后,整个技术团队开始思考未来的技术发展方向,并且对技术架构设计有了新的想法——我们希望做一套新的系统。在把数据一致性、可靠性等特性从应用层整合到数据库层过程中,基于业务腾飞的预判,我们认为,数据库层还需要具备分布式水平扩展的特性。
于是,团队开始对这个数据库架构进行重构。
非常幸运的是,就在TDSQL完成分布式水平扩展的自研开发时,大约到了2009年,腾讯马上迎来了腾讯开放平台时代。那个时候,互联网开始了真正意义的社交应用爆发的阶段,诞生了如开心农场等产品。
而这个TDSQL的雏形,正很好地以高可扩展性、数据一致性、可靠性、高可用性等,支持了当时的开放浪潮。直至到今天,TDSQL经历过了数百亿个账户的场景验证,具备了完善的支持金融级场景和监管要求的能力。
- 为金融场景而生:产品化的金融级分布式数据库TDSQL
技术的迭代常常来自于业务场景的驱动。
2007-2009年中,随着腾讯开放平台的发展,我们迎来了大量的合作伙伴,面临的行业场景也越来越丰富多样。这时大家发现,这款数据库在支持腾讯内部业务体系是很完美的,但是无法很好的为合作伙伴提供服务——因为在发展的早期,它还不够标准化。
如何才能更好地服务合作伙伴的需求?如何才能让这样的分布式数据库系统服务更多用户,最大化发挥技术的价值?……
唯有持续的研发和迭代。
一直到了2012年,期间腾讯以“开源定制化 自研”为策略进行定制化,打磨出更加通用的数据库产品,并正式命名为TDSQL,以解决金融等业务系统中高可用、数据一致性、水平伸缩等问题。
可以说TDSQL的诞生,一开始就是为金融场景而生。
逐渐地,随着对金融行业应用更深刻的洞察,TDSQL逐步完善了分布式事务、分布式查询等能力,在性能和应用性之上持续发展,目标就是把TDSQL打造成一个类似单机版的关系型分布式数据库。我们知道,金融行业对事务处理的需求极高,转账、扣费,无一不是使用事务,而腾讯是少数几个将分布式事务处理,分布式查询用于金融核心系统的企业。
作为一款Shared-Nothing架构的分布式数据库,从能力上讲,TDSQL比当前流行HTAP更进一步,它重新定义了一种综合型的数据库解决方案,也可以分配Noshard实例、分布式实例和分析性实例,同时支持JSON/RockDB等方案。当然,TDSQL最主要的特点在于其具备shard架构能力。
- 持续完善的技术生态和产品服务体系
2016年以后,TDSQL正式开启自主可控之路,开放给更多的金融企业使用,得益于海量业务场景的锤炼,使得TDSQL成为一款产品化数据库,具备一个完整的产品体系。
目前,TDSQL具备六大核心特性,包括数据强一致性、金融级高可用、高性能低成本、企业级安全性、线性水平扩展、智能化运维。而在一些事关数据安全的特性上,TDSQL做了重点的加强,比如针对高可用等问题。TDSQL可以轻松支持异地多活。
除了技术上保障之外,TDSQL还从运营角度保障数据的安全。据分析,目前,金融行业大部分数据库产品化程度不够,相当多的安全事故均是由运营操作不规范带来的。TDSQL通过提供“赤兔”自助运营和“扁鹊”智能DBA彻底规避人为误操作带来的安全隐患。
“赤兔”自助运营服务,可以从管理员视角,在可用性、安全、效率、成本维度进行全方位管控,90%的日常运营操作均可以通过Web页面完成,减少人为差错同时帮助金融用户节约管理及经济成本、降低风险。
“扁鹊”智能DBA则帮助金融用户防范系统异常,通过采集超过400 运营指标,基于AI Policy的智能诊断技术,帮助金融用户快速定位解决问题,并预防潜在风险,防范于未然。
此外,分布式数据库TDSQL为用户提供数据库防火墙、透明加密、自动脱敏等安全防护措施,减少用户误操作和黑客入侵带来的安全风险。
持续积累,用时间锤炼出一款自主可控的数据库
经过十数年的积累打磨,在持续地优化分布式、高可用、高性能等特性,以及不断完善满足客户的需求过程中,TDSQL作为产业化自主可控数据库,持续在行业保持领先。
而TDSQL演进到今天的能力规模,来源于腾讯自身业务场景的驱动和锤炼。一款金融级分布式数据库,必须要经过多年产品生态体系的积淀,以及海量业务场景的锤炼。TDSQL架构的迭代演进,正因为从腾讯海量用户场景、复杂交易的业务实践中来,才能更好地满足广大客户数据库技术和业务柔性的需求。
举个例子,在产品的质量保障方面,TDSQL版本发布会经历严格的流程,最终才推广到客户场景中:首先是计费团队(技术孵化团队)使用验证,继而推广应用到腾讯公司其他业务团队,而在这些内部场景中,我们都能较好地控制和修复;在这两个阶段后,新版本发布才经历腾讯公有云用户的验证,最后发布在私有云上。
另一方面,在产品化过程中,TDSQL结合实际应用和客户反馈,充分考虑数据库整个应用生产流程,来不断完善产品服务体系,包括运营体系、数据库多源同步迁移等配套设施。
基于这样的产品化打磨,腾讯具备开放的技术生态基因。开放并不是说一定要开源,而是提供开放的标准、完善的服务,比如数据库多源同步迁移,以及自主可控的开源生态,支持良性竞争,让客户免于被绑定风险。
未来,如何与Oracle兼容、与AI和异构计算等前沿技术融合等等,都是值得思考的挑战和创新问题。TDSQL将持续通过产研结合、产用结合的方式进行研发突破,并开放商用更多特性,拥抱开源社区。
关于国产数据库的更多介绍,可以点击下方链接到知乎查看: