TDSQL:从自主可控金融级数据库看腾讯“智能 +”技术中台之路
作为“互联网+”和“智能+”的主要技术供应商,腾讯提出了“云化”已经成为重要的创新模式,各行各业都将进入“互联网+”的下一站——“智能+”阶段。在此过程中,腾讯云将充分发挥“连接器”的作用,用“智能”连接各行各业。
2019 年,3 月 12 日,腾讯云全新发布自主可控金融业务支撑平台,该平台融合了可支撑数百万虚机的专有云平台 TCE、服务过 380 亿账户的分布式数据库 TDSQL,以及在腾讯海量业务场景淬炼出来的微服务平台 TSF、大数据及人工智能平台 TBDS&Ti 等在内的优势能力,帮助金融机构打造自主可控,安全稳定的金融云平台。
腾讯云这套自主可控金融业务支撑平台最显著的特点是以主流开放开源技术标准为核心,降低金融机构在基础设施及应用场景中对单一技术方的过度依赖,为行业提供一站式技术服务能力。其中的 TCE 和 TDSQL 支持国产芯片及操作系统部署,是自主可控的“智能+”技术中台。国内首家云上银行微众银行在腾讯金融云的自主可控核心技术上构建了全行级分布式技术架构,实现了可支撑亿量级客户的高并发交易核心系统,截止 2017 末累计向 1200 万人在线发放贷款 8700 亿,贷款不良率为 0.64%、低于银行业平均水平,是普惠金融的代表。
TDSQL 金融级分布式数据库是腾讯云基于开源和自研的分布式技术代表,其领先的产品性能、自主可控的核心特性以及完备的产品化体系,充分打消了国内金融行业拥抱开源技术时对可持续性、开发和运维能力以及安全等问题上的顾虑。作为腾讯云自主可控金融业务支撑平台的核心技术代表,TDSQL 在腾讯内部支撑计费及金融业务日均交易量超 10 亿次,充分体现了腾讯的“智能+”技术中台特色。2018 年 11 月,TDSQL 以总成绩第一,成为了首批通过数据中心联盟金融分布式事务数据库评测的数据库产品。
腾讯云数据库技术发展历程
操作系统、数据库和中间件是三大企业级基础软件,任何一款基础软件产品必须经过多年的沉淀,数据库也不例外。在 3 月 12 日腾讯云举办的自主可控金融业务支撑平台发布会现场,腾讯云数据库产品总监王义成和腾讯云分布式数据库 TDSQL 负责人潘安群给我们分享了腾讯云数据库的自主可控发展之路。
腾讯云金融级分布式数据库是一套完整的体系,包括核心功能以及运营配套服务,可满足当前金融行业对于数据的分布式和高一致性需求。
TDSQL 架构图
TDSQL 的萌芽阶段在 2002 年左右,也是腾讯首次接触计费的时候。此前,由于 QQ 业务的关系,腾讯以 Key Value 非关系型 NoSQL 开源数据库为主,NoSQL 数据库主要针对互联网和游戏的海量网页文件存储等业务场景。因此,腾讯历史上也没有采用过 Oracle 等商用数据库,而是从一开始就采用开源数据库。
到了 2007 年左右,腾讯计费业务的规模日益变大,Q 币等数据资产要像银行那样不能丢失数据,对高一致性和可靠性的要求越来越高。腾讯在 2007 年的时候开发了一款完全自研的简化版分布式数据库,当时很好地满足了腾讯业务的发展。当时的腾讯数据库技术在保证了数据高可靠性、一致性的情况下,还可以快速地进行水平分布式扩展。
2009 年腾讯正式开放平台,大量的新客户和新业务场景涌入,实现了腾讯第二次腾飞的同时,也对数据库技术产生了新的要求。2009 年那一年,腾讯仅计费业务一年对数据库进行了近 900 次扩容,很好的支持了业务的快速增长。
2012 年,随着腾讯开放平台和技术的发展,从最开始的游戏业务到各行各业的应用,腾讯发现有很多场景是之前没有考虑到,而且之前的数据库是基于腾讯业务场景的定制化解决方案,无法满足更多的合作伙伴诉求,当时的金融业务对关系型数据库的要求比较高,腾讯当时考虑到业务的规模越来越大而导致要求系统的水平扩展能力,最终决定在开源技术上自研的道路。2012 年,腾讯启动 TDSQL,希望在高可靠性、高一致性的前提下,做到更加通用化、适用更多的业务场景,也就是瞄准 Oracle 或 DB2 这样的通用关系型数据库产品。
两年后,2014 年微众银行开始筹建,在调研了国内外分布式关系型数据库之后,认为腾讯 TDSQL 最能满足自主可控以及银行业务需求。2015 年,TDSQL 在腾讯公有云上线,2016 年推出了面向专有云的版本,到 2018 年 TDSQL 已经服务超过 500 家的公有云客户和 28 家的专有云客户。
本次腾讯云自主可控金融业务支撑平台发布,TDSQL 也新发布了 1.13 版本,性能较上一版提升了 80%,同时完全支持国产化操作系统、芯片和服务器,使得核心数据库平台的可控性达到新的高度。基于 MySQL 以及 MariaDB 开源关系型数据库技术的 TDSQL,让腾讯云以及国内金融行业用户可以跟进未来的业务发展趋势,做到超前的自主可控。
除了面向私有云版本的 TDSQL 外,腾讯云还在公有云上提供了分布式数据库服务 CynosDB,基于共同的分布式金融级数据库技术,满足金融机构的多种需求。
高度产品化的 TDSQL
TDSQL 是腾讯云在开源关系型数据库 MySQL、MariaDB 以及 Percona 基础之上的综合自研数据库解决方案。在全球数据库排行榜 DB-Engines 上,MySQL 是全球排名第一的开源关系型数据库,MariaDB 和 Percona 都是 MySQL 的可替代分支改进版本,其中 MariaDB 全球排名 12 左右、PerconaServer for MySQL 排名 90 左右,这二者对 MySQL 有着各自的改进。
TDSQL 全称为 TencentDistributed SQL,是腾讯云数据库团队维护的金融级分布式架构和 MySQL 内核分支的统称,腾讯 90%的金融、计费、交易类业务核心系统都承载在 TDSQL 中,也应用到众多政府、银行、保险、制造业、物流、电商等客户的核心系统。TDSQL 可以交付关系型数据库、分布式数据库、分析型数据库等形态的数据库技术,也提供强同步数据复制、线程池、热点更新、内核优化等能力,以及事前、事中、事后的全维度安全方案等。
TDSQL 兼容绝大多数常用的 MySQL 语法,通过分布式事务、全局唯一序列、支持数据交换格式 JSON 等有效弥补了分布式架构的不足,解决了因分布式架构而导致的数据库高级功能与数据库性能之间的矛盾。TDSQL 深度定制开发了 MySQL 内核,例如:支持三种数据读写分离方案,以有效实现读数据的水平规模扩展;自研了基于 MySQL 协议的异步多线程强同步复制方案,在保证数据强一致的同时,做到自动化管理集群节点、每个节点可随时切换、无需共享存储设备;对业务层的无感知、无侵入,通过逻辑表屏蔽了物理层的数据处理,业务层无需做任何改变,在数据库层就能实现强一致、读写分离等功能,从而达到高度产品化。
作为支持金融级核心交易业务场景的数据库,TDSQL 也是 MPP 大规模并行处理架构,其分布式架构中的每个分片都各自承担部分分布式任务,从而实现大规模的并发性能、处理能力和支持存储容量的线性增长。TDSQL 进行了多种系统内核计算负载优化,通过 sysbench 的压力测试可达到单个分布纯写入操作超过 12 万+TPS(每秒交易处理量)、纯查询操作性能超过 48 万 QPS(每秒查询率),性能是当前主要使用的 MySQL 5.6 版的 4 倍、5.7 版本的 2 倍以上。
TDSQL 的核心模块主要包括:调度集群(Tschedule)、物理节点组(SET)和接入网关集群(OLTP-Proxy)、决策集群(TzooKeeper)以及赤兔自动化运维平台。TDSQL 支持在线实时扩容,采用腾讯自研的自动再均衡技术以保证自动化的稳定扩容,无需业务停机,并经过腾讯内外部海量业务迁移实践。在支持金融级高可用性方面,传统金融机构都要求两地三中心架构,而在腾讯内部的金融业务方面很早就实现两地四中心,即同城三中心多活的架构,达到更高可用性和更低成本。
腾讯云 TDSQL 数据库有很多管理模块,可以更好的方式管理数据库,达到国际数据库产品水准。打包在 TDSQL 产品中的赤兔自动化运维平台,让 80%-90%的数据库运维操作都能够通过外部网页界面完成,就像使用公有云的体验一样,降低了客户的使用门槛,不需要掌握大量知识就能运维 TDSQL 数据库。
在数据库故障检测方面,TDSQL 专门积累了腾讯十多年来超过 20 亿数据库实例运维的专家知识库,以智能 DBA 的方式提供给客户,能在故障检测和维护时做到快速定位问题、以高效和高可用方式解决问题。
运营管理是大部分国产数据库产品化时容易忽略的方面。数据库的核心功能再强,但也要让客户使用起来。以前国产数据库往往交付给客户十几页到几十页的使用手册,而赤兔自动化运维平台则一键就可以搞掂数据库运维,不需要太复杂的命令和操作,误操作的可能性非常小。另外,赤兔自动化运维平台也是开放架构,可以与企业内部的 OA 系统、权限管理系统等打通,实现审批流操作等,对银行来说达到更高的系统可控性。
除了自动化运维外,腾讯云还将在 2019 年发布 TDSQL 认证体系,未来将对合作伙伴进行资质认证。通过广大认证的合作伙伴,让客户在实施交付数据库的时候更加放心,推进产品化的服务体系。
走过了那些坑儿
腾讯云数据库产品总监王义成介绍,在做 TDSQL 研发的初期,当业务压力来临撑不住的时候就要做读写分离,读写分离之后发现账单业务的读延迟比较大,导致大量的业务部门投诉,因为有延迟就相当于钱上的损失,当时想倒逼业务层面做容错,但业务部门认为应该由数据库负责,因此就反逼数据库花了很长时间开发 MySQL 开源社区里没有的功能,“逼着我们往前看”。
经过长时间的积累,腾讯数据库运维人员逐渐理解了就算数据库技术再好,也要让业务层无感知,即压力在数据库技术内核层面解决后,让业务可简单接入。而在性能方面,因为腾讯的海量业务场景,即使性能优化 10%、硬件成本降低 10%,一年可能就是几千万、上亿的成本节省。TDSQL 在性能方面“抠”了很多点,在存储、引擎、性能等方面的优化,降低成本的同时,确保满足金融行业需求。
当时的腾讯数据库运维人员有一个目标叫做安心喝咖啡,即底层技术运维人员不再担心半夜被叫起来处理故障。“以前腾讯有同学就说,游泳都不敢去,因为游泳时手机不能放在身边,手机也不能防水,当时也没有手环。”后来,故障处理多了,就知道突发流量对数据库的要求是什么,怎样才能满足几十倍峰值流量的冲击。潘安群表示,现在整个腾讯的数据库产品和运营体系都很完善,实现了故障的秒级自动切换,运维人员收到告警也不需要像以前那么急,多睡一会儿也没有关系,只需要起来的时候看一下故障原因再分析就可以了。
值得一提的是,最开始基于 MySQL 开发适应金融场景的 TDSQL 时,那个时候的 MySQL 在数据复制上其实不具备金融级要求,TDSQL 在数据强一致复制等方面进行了大量的自研创新。TDSQL 的水平伸缩功能也经历了几个版本,最开始在实际运营过程中并不太稳定,TDSQL 团队进行了彻底的性能优化,最终满足腾讯海量业务场景的要求。在 Oracle 比较擅长的 ACID 金融交易事务处理方面,TDSQL 开发了分布式事务处理,为了保障在故障时的交易事务成功,TDSQL 团队 7X24 不停运行自我破坏性模拟,包括机房断电、宕机等异常,确保银行转帐等交易事务的健壮性。
总体而言,腾讯分布式数据库 TDSQL 在设计理念上,对 MySQL 等开源数据库的高度兼容,实现在分布式架构下数据强一致性、高可用以及水平扩展,是高度产品化的开源自研分布式金融级数据库产品。腾讯金融云总经理胡利明强调,包括 TDSQL 在内的腾讯云金融业务支撑平台,降低了金融机构在基础设施及应用场景中对单一技术方的过度依赖,为行业提供一站式技术服务能力。
“到去年 2018 年底为止,腾讯申请的专利数达到 25000,在全世界的互联网公司当中排名第二,仅次于谷歌,其中 AI 的专利达到了 3000 个。在云计算领域申请通过的专利数,也在国内互联网公司中排名第一,同时在云计算最核心的虚拟化领域,腾讯在开源社区的代码贡献在国内云厂商中连续两年排名第一。”胡利明强调,腾讯 2014 年帮助微众银行构建了第一家全行分布式架构系统,“当时引起了很大的轰动,为国内银行业自主可控转型提供了强心剂”。
从 TDSQL 的开发历程中,可以看出腾讯“智能+”技术中台之路:开源+自研的高度产品化,发挥腾讯的产品化基因,以开源生态和开源技术为连接器,广泛连接企业级技术和客户,实现企业级“数字生态共同体”,从而成为自主可控“智能+”的基石。
评论