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 的蜕变,将更多腾讯内部的数据库技术普惠给腾讯云用户。
本文转载自公众号云加社区(ID:QcloudCommunity)。
原文链接:
https://mp.weixin.qq.com/s/_RN1ROloVKFfFCsMuE8_vg
评论