在云计算时代,由于对弹性、高可用性、可扩展性的需求以及来自不同业务领域的应用程序对按需使用的需求增长,云原生数据库变得越来越重要。云应用程序的这些需求为云原生数据库提供了新的机会,而传统的企业内部数据库系统无法完全满足这些需求。
腾讯云原生数据库经过多年的研发和打磨,所实现的计算、内存与存储资源的解耦的“日志即数据库”架构、HTAP、Serverless等特性,已是全球首创或业内领先的技术,同时其性能对比传统云数据库达到数倍的大幅度提升。
▲腾讯云数据库产品总监 刘迪
【嘉宾介绍】腾讯云数据库产品总监,中国计算机行业协会开源数据库专业委员会副会长、北京航空航天大学特聘讲师。深耕云数据库产品策划多年和多年游戏、金融、电商等行业的数据库架构设计经验。带领团队完成了腾讯云数据库MySQL的企业化转型,云原生数据库TDSQL-C的孵化和新一代架构升级以及AI与数据库自治等核心项目, 实现了云原生数据库性能、市场覆盖率、规模、营收等多维度快速增长和突破。
本文内容将围绕着腾讯云原生数据库在架构演进、软硬结合探索、自研内核优化等方面的核心技术解析展开。结合海量数据存储、高频交易场景、流量洪峰/不可预估场景、开发测试等周期性峰值业务场景的行业案例,深入解析新一代云原生数据库TDSQL-C的产品特性、技术亮点以及未来的发展趋势。
分享大纲:
1、数据库行业演进概述
2、云原生数据库关键技术解读
3、云原生数据库典型场景案例
4、未来已来:Serverless
数据库行业演进概述
简单回顾一下整个数据库的发展与变革,相信绝大多数DBA都经历过这样的时代。起初是传统IT时代,当时企业广泛使用商业数据库,包括Oracle、IBM的DB2,以及SQL Server。随着互联网的发展,这类数据库的弊端逐渐凸显,过于依赖硬件,价格昂贵等问题层出不穷。
随着互联网时代的萌芽,许多开源数据库纷纷崭露头角,包括MySQL、Redis和MongoDB等,基于典型的LAMP框架去做应用。后面两个时代十分相近,都是基于云计算,对技术、业务提出新的挑战和机遇。各个云厂商陆续推出云上的数据库,包括云数据库RDS、云托管NoSQL等一系列云数据库。在业务需求和技术发展的共同推动下,云原生数据库也出现在了大众的视野中了。
反过来看云数据库时代提到的数据库产品,都有一个共同的特征,那就是通过搬迁模式来实现数据库云托管。这并没有打破传统数据库固有的软件设计、架构特性和部署模式,而是云厂商的规模效应,或者使用更好的设备、方式来承载开源数据库的软件架构。
值得一提的是,云原生数据库打破传统数据库在软件设计上效率不极致的问题,利用软件设计工程学的方法,包括新软硬件的结合,AI赋能,三位一体,解决传统云数据库的“七宗罪”包括:性能天花板低、数据回档慢、维护成本高、故障恢复慢、资源利用率低、复制延迟高、扩展性弱。
如何告别搬迁模式,实现真正的云原生数据库?需要解决以下三个方面:客户使用资源的业务效率,资源被云厂商管理提升的系统效率,以及云厂商为客户提供服务的运营效率。业务效率,是如何给客户提供高性能、高稳定的产品。在资源被云厂商管理的情况下,如何对资源物尽其用,提高资源的利用率。运营效率,保证数据库既能够在高性能的场景下运转,又能够保证业务的连续性、数据库的稳定性。
云原生数据库关键技术解读
TDSQL-C MySQL是腾讯云自研的新一代云原生关系型数据库。融合了传统数据库、云计算与新硬件技术的优势,采用“存储和计算分离的架构”,100%兼容MySQL协议,为用户提供极致弹性、高性能、高可用、高可靠、安全的数据库服务,主要包括几个特性:
开放兼容。100%兼容开源MySQL。无需改动代码,即可完成数据库查询、应用和平滑迁移。
超高性能。单节点百万QPS的超高性能,可以满足高并发、高性能的场景。
海量存储。支持PB级的海量存储,为客户免去频繁分库分表的繁琐操作,同时支持数据压缩。
高可用/高可靠。故障秒级恢复,并且维护数据和备份的多副本,保障数据安全可靠可达99.9999999%。
弹性扩展。根据业务需要快速升降配,秒级完成扩缩容和横向弹性扩展。
超低成本。支持Serverless架构,自动扩缩,仅按照实际使用量计费,不用不计费,成本降低超60%。
上图是大家非常熟悉的MySQL主从架构,不论是数据写盘过程,还是Master到Slave的同步, 均有大量的数据流和日志产生。
提升资源的扩展性、灵活性,解耦算存资源,而牺牲性能,本地IO全部变成网络IO,这对用户来说,是用性能换取灵活性, 是不可取的。腾讯在设计云原生架构时,最先考虑的就是不能牺牲性能,保证高性能的前提下,实现真正的灵活性和性能,得到一个计算与存储分离的云原生数据库架构。
存储上最重要的优化是把数据流进行重构,如何能够缩小网络传输的数据量,提高网络IO的吞吐,改变原先的IO模式,使得对性能的影响减轻到最低?对此,腾讯云选择增量的物理日志来实现,TDSQL-C抛弃逻辑日志和数据页面的原始数据流,通过物理日志在存储层进行并行回放数据页面和逻辑日志。
通过这种模式,腾讯云完成了云原生数据库的软件设计,最终可以看到不管是在全Cache, 还是大数据库的测试场景中,TDSQL-C的性能相比传统的云数据库有200%的提升。
云原生数据库TDSQL-C采用腾讯云数据库团队自研的TXSQL内核,100%兼容原生MySQL版本,针对企业级的重要场景,研发出众多核心特性。大幅提升了性能和稳定性, 并将多项特性优化提交给开源社区并获得认可。在8.0版本实现并行计算、事物异步提交、写下推、热点系统优化等功能。
内核TXSQL孵化出很多企业级的产品能力,比如SQL审计、SQL限流与防火墙、Instant DDL、共享内存、空闲事务管理,以及Flashback Query,可以查询多版本、多时间的数据集,快速让用户进行数据恢复。
随着产业发展,表单数据量、复杂查询数量、OLTP/OLAP混合场景出现频次呈飞速上升趋势,传统MySQL只支持单线程查询处理模式,且由于计算与存储的紧密耦合,无法有效解决这类问题,这导致了多种弊端产生。
TDSQL-C并行查询能力,打破传统MySQL单SQL无法利用多核CPU的瓶颈,实现了并行查询框架,将数据分到不同的线程上,多个线程并行计算,将结果流水线汇总到总线程,复杂查询效率大幅提升。
前面解决的是复杂查询的问题,Instant DDL解决的是海量数据做库表结构变更、库表类型变更的问题。大表的DDL是比较典型的IO bound场景,执行期间会对业务产生较大的影响。为此TDSQL-C针对特定用户场景支持了instant DDL操作,实现秒级DDL的效果。TDSQL-C在系统表中增加相关元数据表用来存储元数据的版本变更,在数据行中标识元数据版本信息,对任何行的解析都可以跟踪到元数据的版本,进而对行进行正确的操作。目前已支持add columnC和modify column两种操作,整个DDL的代价由O(n)降到了O(1)。举个浅显的例子,对一张5kw的表(12GB)左右,分别进行秒加列和秒改列的操作,正常情况下加列需要2分钟、改列需要21分钟左右;而使用秒加列和秒改列,瞬间就能完成。
云原生数据库TDSQL-C对网络架构进行了全面升级,采用全链路RDMA网络,进一步优化了存储层与计算层以及存储层多副本间关键路径的系统性能,降低请求延迟最高达80%,使I/O性能不再成为瓶颈。
众所周知,TCP协议的延迟基本都集中在协议栈,用RDMA替换之后,裸协议的延迟大概可以从250us降低到30us,整体性能达到200%以上的提升。
云原生数据库TDSQL-C首次尝试用编译器优化,利用英特尔oneAPI DPC++/C++编译器,结合链接时优化(LTO)和配置文件引导优化(PGO)的方法对应用程序进行模块间优化(IPO),允许对代码实现深入分析和进一步的优化,来达到更好的性能。配置文件引导优化则向编译器提供程序中最常被执行区域的信息。这些技术相结合,共同使腾讯云原生数据库TDSQL-C 性能得到显著提升,最高可达85%。
利用AI技术,腾讯云原生数据库TDSQL-C提供自调优、自诊断、自优化等特性,实现索引自动优化、异常检测、根因分析、SQL限流等,能够保证数据库在运行阶段、维护阶段都有非常稳定的产品表现。
云原生数据库典型场景案例
在腾讯的集团内部,包括腾讯自身的明星级业务,微信、腾讯视频、腾讯会议、财付通、微信支付等都已经开始做云原生的架构升级。在集团外部,不管是金融行业、政企行业,还是泛互联网行业、泛企业领域、新零售、智慧出行,也都纷纷开始使用云原生数据库。
新零售领域的代表企业瑞幸咖啡,没有经历云数据库阶段,直接完成从自建的MySQL迁移到云原生数据库的跨级跳跃,帮助用户解决原来的老架构无法快速扩容,线上大促活动时经常出现使用卡顿、无法提交订单、无法支付的难题。
对瑞幸来说,整个迁移过程是平滑且快速的,100%兼容MySQL,自建一步到位,云原生架构没有改动任何业务代码。迁移之后,在做活动期间扩缩容速度从原来的天级别,变成秒级别,保证既满足峰值对数据库性能的要求,也保证在活动结束以后能够快速释放闲置资源,降低IT运营的成本。
移动互联网领域的BLUED,完成了核心系统开源分布式数据库替换。替换之后,TDSQL-C典型场景延时降低到20ms以下,基于TDSQL-C超高性能同样业务场景下成本降低60%。TDSQL-C用最小的资源承载能够保证业务提升五倍的性能,同时能够保证不做烦琐的分库分表。
未来已来:Serverless
截至目前,云数据库共经历了三个时代。1.0时代,开源托管数据库产品RDS,以租户方式提供给用户。2.0时代,云原生数据库时代,存算分离结耦提供了更极致的性能。3.0时代,Serverless数据库应用阶段,自动弹性能力、更加智能化的运维,极致化的成本优势提供了更为广阔的想象空间。数据库的发展由对性能、稳定性、安全的要求,逐步发展为对极致成本的要求。大家认为Serverless是下一个云原生的风口,Serverless数据库是在高性能云数据库之上的极致成本优化方案。
早在2020年底,腾讯云就推出云原生数据库TDSQL-C Serverless,能够实现秒级极致弹性伸缩,高度智能化,屏蔽底层繁琐操作和运维,使用成本降低80%以上等功能。
Serverless数据库可根据用户负载需求无感扩展,不到1秒即可从数百个事务扩展到百万级事务,将有望实现更加精准预测增长。机器学习算法是实现Serverless数据库智能化的关键算法,可以对大量数据进行学习分析,构建应用领域模型,使数据库更加智能化。
随Serverless技术的不断发展,数据库的易用性得到进一步提升,未来将支持更多的扩容和自动弹性拓展手段,其本质上是让用户更贴近应用,而无需关注后端服务。
Serverless数据库根据精细的增量调整容量变化,相比按照峰值负载预置容量具备了更加完善的机制,真正做到“无使用不计费”, 帮助用户更省成本。
此外,云原生数据库Serverless辐射海量开发者生态。腾讯云原生数据库TDSQL-C Serverless实现与微信生态互通,联合微信小程序云开发,创造开发者使用数据库新形态。已为接近50万小程序开发者提供了一站式开发云服务。
同时,TDSQL-C Serverless也联合Coding DevOps,无服务器函数SCF、轻量级服务器、物联网平台等为企业和开发者提供一键部署多端运行的全套解决方案。