腾讯新一代企业级云数据库CynosDB(NewCDB)

    CynosDB产品简介。CynosDB,又称NewCDB,是由腾讯云和TEG基础架构部数据库技术团队联合打造的面向云计算2.0时代的新一代企业级分布式云数据库。在兼容开源数据库MySQL的生态体系下,它重新定义了MySQL分布式架构,从而在单实例极致性能、事务响应延时、存储扩展性以及可用性等关键技术指标上,达到商用级数据库级别;与此同时,它是面向通用硬件进行的软件极致优化,相比商用级数据库,它的性价比非常高,能把云计算共享经济普惠给万千腾讯云用户。

    CynosDB名称来源。Cynos源于拉丁语中的Cynosura,古希腊神话中北极星的名字,现意为焦点,引人注目的人或物。CDB是腾讯云数据库的产品简称,NewCDB是在CDB十年技术和产品沉淀的基础上诞生的。腾讯云数据库产品在继承中不断完成突破。

CynosDB设计出发点。随着云计算2.0时代的来临,在云计算技术和服务的支持下,越来越多的互联网企业业务规模快速扩大,它们对构建于云端的核心基础设施服务—数据库服务提出了更高的要求,如更高的性能、更好的稳定性和更低的成本等。与此同时,越来越多的零售、IoT和医疗等传统行业通过“接入云”完成数字化转型和升级,迫切需要云数据库服务能无缝替换传统数据库产品。以传统的方式,将长期以来主导企业解决方案的数据库Oracle 和 Microsoft SQL Server等以“lift and shift”的方式直接搬到云上提供托管服务并不能满足用户在扩展性和可靠性等方面的需求,授权许可费用也使得订阅计费的方式不能从根本上降低数据库的使用成本。因此,通过技术手段解决这些问题正是腾讯数据库技术团队自研新一代云数据库CynosDB的出发点。

业界方案。以Google Spanner和AWS Aurora为代表的NewSQL现代关系型数据库提供了新的思路,即既有NoSQL数据库相同的扩展性能,又保持了传统数据库支持ACID和SQL的特性。其中Amazon Aurora通过对开源数据库MySQL和PostgreSQL的计算与存储解耦来实现数据库在云端的扩展和弹性调度,并将业务迁移成本和总拥有成本降到最低,得到了市场的普遍认可。

    基于对当前云计算用户场景深度分析,CynosDB(NewCDB)参照了类AWS Aurora路线,为用户提供新一代架构的MySQL服务。

当前主流MySQL技术分析。MySQL的主流架构来看,主要由两种方式,一种是一主多从集中模型,他通过多个slave来构建一个多可用区部署的分布式数据库,提供一个较好的服务可用性和数据可靠性等。另外就是分库分表这种方式,主要来解决集中模型中的扩展问题。这两种架构模型能满足一些业务场景的要求,但随着业务的发展,在很多应用场景,尤其是企业级比较苛刻的应用场景下,它天生的技术缺陷就凸显出来了。主要表现如下:

  • 计算存储融合:存储扩展有限、写性能有限、资源利用率低。
  • 日志复制路径过长:同步开销大,影响到RTO,导致slave的stale read。
  • 基于中间件的分库分表:SQL/事务无法兼容,应用需要改造。

业务推动技术发展。CynosDB(NewCDB)针对当前业务场景对数据库技术指标的苛刻要求,进行技术架构自我突破。技术原理上的优势主要体现在以下几个方面:

  • 云原生:基于腾讯云上多年成熟组件来构建,主要包含腾讯自研MySQL内核TXSQL和自研统一存储TXStore等。
  • 卸载:计算和存储分离。
  • 分布式存储:提供高可用、高可靠和强一致的弹性存储。
  • 可计算存储:日志即数据库,存储自行完成记录到页的转换。
  • 轻量级计算节点间复制:低开销、低延时的日志同步。

如何云原生。CynosDB(NewCDB)的计算引擎是基于Tencent MySQL(TXSQL)来完成的。TXSQL支持主流的MySQL5.6/5.7版本,结合业务场景,在性能、企业级特性和稳定性上进行了百余项的定制patch,满足公司内以及腾讯云上各个业务在高并发性能、数据安全和稳定性上的要求。CynosDB(NewCDB)的存储引擎是基于自研统一存储平台Tencent Storage(TXStore)来完成的。TXStore作为存储后端,为腾讯云硬盘以及云文件提供数据存储服务。

    如何卸载。CynosDB(NewCDB)计算引擎和存储引擎解耦主要解决三个问题。第一个问题是解耦后存储放在哪里。CynosDB(NewCDB)借助TXStore来为计算集群提供独立存储,通过存储池化来解决存储扩展、写性能扩展以及资源利用率的问题。第二个问题是如何解决计算引擎和存储引擎之间的网络传输效率。这里采用了极简IO思路,传递事务日志,由存储自行完成日志到记录的转换;同时也充分发挥RDMA等硬件优势,在数据传输上灵活的使用服务器主动模式和客户端主动模式,在元数据传输上结合基于消息RPC和基于内存RPC的优势。最后一个问题是计算节点独享存储还是多个计算节点共享一份存储。存储本身是多副本的,所以选择共享,于此同时能快速的进行计算节点的扩容,因为做到了数据的零拷贝。

    如何实现稳定的分布式存储。CynosDB(NewCDB)采用腾讯TEG基础架构部自研统一存储TXStore来承担稳定的分布式存储。TXStore针对云上复杂应用环境对基础设施苛刻的要求,它在数据的高可靠、极致性能和企业级特性上进行了大量创新设计,为腾讯云硬盘CBS、云文件CFS和云数据库CDB来提供底层存储。TXStore在数据库多副本多可用区分布的技术基础上,通过基于数据多版本的秒级快照技术,结合CDP(Continuous Data Protection)连续数据保护技术,满足数据可靠性9个9以上的要求。在性能上,通过软硬一体化技术,实现极简IO架构,研发适合现代硬件的高性能异步软件开发框架CEDA(Container Event-Driven Architecture ),充分利用NVME/Optane存储介质和RDMA网络等硬件红利,提供单client百万级IOPS和亚毫秒RT(response time)延迟能力,达到甚至超过商业级存储的水平。于此同时,利用AI深度学习技术,实现了存储节点磁盘故障预测、IO预取和缓存等能力。

如何实现可计算存储。CynosDB(NewCDB)在存储引擎上完成日志转换为记录以及数据页的存储。存储引擎收到日志后,会进行日志强一致的存储,完成存储后即可响应计算引擎,将事务提交RT降到最低。通过异步方式完成日志到page的落地。为了提高效率,采用了批量并行处理的技术。存储引擎会对日志进行排序等预处理,然后按照InnoDB page的方式,批量将事务日志中的内容应用到page上。为了兼顾性能和成本,存储引擎上采用了智能多级存储以及小颗粒度的按用分配技术。

如何实现轻量级计算节点间复制。CynosDB(NewCDB)在支持MySQL原生binlog方式复制之外,在同region支持了基于redolog的复制功能。通过设计基于redolog的新复制协议,将系统表、DDL以及DML相关同步通过redolog在多个计算节点间完成复制。在Slave上,也采用了无磁盘IO的apply方式,大大加快同步效率。

    从CDB到NewCDB,腾讯云数据库经历了从云数据库服务构建和重新定义,形成了覆盖全业务场景的OLTP数据库产品。

    在接下来的道路中,腾讯数据库技术团队将继续深挖云上用户痛点,构建企业级特性,进一步完善云数据库自治能力,完成从NewCDB到SmartCDB的蜕变,将更多腾讯内部的数据库技术普惠给腾讯云用户。


腾讯数据库技术团队对内支持微信红包,彩票、数据银行等集团内部业务,对外为腾讯云提供各种数据库产品,如CDB、CTSDB、CKV、CMongo, 腾讯数据库技术团队专注于增强数据库内核功能,提升数据库性能,保证系统稳定性并解决用户在生产过程中遇到的问题,并对生产环境中遇到的问题及知识进行分享。