腾讯云发布新一代自研云原生数据库CynosDB
Posted InfoQ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了腾讯云发布新一代自研云原生数据库CynosDB相关的知识,希望对你有一定的参考价值。
11 月 22 日消息,腾讯云宣布新一代自研云原生数据库 CynosDB 正式发布。
作为腾讯云在产品矩阵上的重要布局,CynosDB 融合了传统数据库、云计算和新硬件的优势,支持无限量存储、百万级查询和秒级的故障恢复,与高性能形成对比的是,CynosDB 价格仅为市面上商业数据库的 1/15。
另外,CynosDB 在产品架构上完全兼容开源数据库引擎接口,是国内首家兼容 mysql5.7 和全球第一个兼容 PostgreSQL10 的云数据库产品。目前来看,MySQL 和 PostgreSQL 是市面上最主流的两大数据库产品,因此,CynosDB 的兼容性,让企业几乎无需更改代码就可实现无缝“上云”。
“CynosDB 的推出对于丰富腾讯云数据库产品矩阵,提升腾讯云的产品技术能力具有里程碑的意义,同时,良好的兼容特性和极致性价比,将大大推进企业的‘上云’进程。”腾讯云数据库产品总监祝百万表示。
Cynos 源于拉丁语中的 Cynosura,古希腊神话中北极星的名字,意为焦点,引人注目的人或物。
随着云计算 2.0 时代的来临,在云计算技术和服务的支持下,越来越多的互联网企业业务规模快速扩大,它们对构建于云端的核心基础设施服务—数据库服务提出了更高的要求,如更高的性能、更好的稳定性和更低的成本等。
与此同时,越来越多的零售、IoT 和医疗等传统行业通过“接入云”完成数字化转型和升级,迫切需要云数据库服务能无缝替换传统数据库产品。以传统的方式,将长期以来主导企业解决方案的数据库 Oracle 和 Microsoft SQL Server 等以“lift and shift”的方式直接搬到云上提供托管服务并不能满足用户在扩展性和可靠性等方面的需求,授权许可费用也使得订阅计费的方式不能从根本上降低数据库的使用成本。因此,通过技术手段解决这些问题正是腾讯数据库技术团队自研新一代云数据库 CynosDB 的出发点。
作为云原生数据库,CynosDB 集众多创新技术于一身。以软件优化与新硬件结合为理念,采用了先进的技术和存储分离架构,同时实现了计算机无节点状态,支持秒级故障切换和回复,数据备份时间缩短到 60 秒之内,速度提升了 180 倍。
在此基础上,CynosDB 可以达到单节点 130 万 QPS 读性能,超过业内目前最高 100 万 QPS 水平,满足企业按需分配计算和存储资源,实现弹性调度,动态扩容,节约用户成本,具有多租户,水平扩展存储,融合传统关系数据库、云计算与新硬件、新网络优势,全面兼容 PostgreSQL 和 MySQL。
另外,CynosDB 是公有云原生架构的,其核心思想是在资源池化的基础上实现公有云高性价比、高可用性以及弹性扩展等诸多优势。实现资源池化的最大技术挑战是高效、稳定的弹性调度能力,需要做到:
存储与计算分离:这样计算资源(主要包含 CPU 和内存)就可以使用现有成熟的容器、虚拟机等技术实现资源池化
分布式存储:将数据分割成规格化的块,引入分布式调度系统,实现存储容量和 IO 的弹性调度,从而实现存储资源的池化
那么对于数据库产品来说,是否有现成架构可以很好的满足以上两个需求呢。先看一下传统基于云盘的架构:
但该架构有如下不足:
网络 IO 重:可以看到就 1 个数据库实例,就有大量数据需要写到云盘,这些数据主要包括:WAL LOG、页数据、防止页部分写的 Double Write 或者 Full Page Write。除此之外,云盘还要将这些数据做多个备份
主从实例不共享数据:一方面浪费了大量存储,另一方面进一步加重了网络 IO这些不足导致基于该架构的数据库产品在系统吞吐能力上无法与基于物理机部署的主从架构竞争,而且延迟也受到很大的挑战,这对 OLTP 类业务的影响非常明显。同时每个数据库实例都单独拥有一份(实际可能是 2-3 份)存储,成本也很高。
CynosDB 针对这两个不足,采用了如下设计:
日志下沉: WAL LOG 从逻辑上已经包含了数据的所有变动,CynosDB 将 WAL LOG 下沉到存储层,数据库实例就只需要将 WAL LOG 写到存储层,不再需要写页数据(页数据以及 Double Write 或 Full Page Write),同时这个 WAL LOG 也作为 RAFT 协议的日志来完成多个数据备份的同步,进一步减少了网络 IO。
主从实例共享数据:CynosDB 的主从实例共享共一份存储数据,进一步减少了网络 IO,同时极大的减少了存储容量循着这两个解决思路,腾讯云对传统基于云盘的架构进行优化,就有了 CynosDB 如下架构
图中组件包括:
DB Engine:数据库引擎,支持一主多从。
Distributed File System:用户态分布式文件系统,主要提供分布式的文件管理,负责将文件的读写请求翻译为对应的 BLOCK 读写
LOG/BLOCK API:Storage Service 提供的读写接口,对于读写请求有不同处理:写请求:将修改日志(等价于 WAL LOG)通过 LOG API 发送到 Storage Service读请求:直接通过 BLOCK API 读取数据
DB Cluster Manager:负责一主多从 DB 集群的 HA 管理。
Storage Service:负责日志的处理、BLOCK 数据的异步回放、读请求的多版本支持等。同时还负责将 WAL LOG 备份到 Cold Backup Storage
Segment(Seg):Storage Service 管理数据 BLOCK 和日志的最小单元(10GB),也是数据复制的实体。图中同样颜色的 3 个 Seg 实际存储同一份数据,通过一致性协议(Raft)进行同步,我们叫做 Segment Group(SG)。
Pool:多个 SG 从逻辑上构成一个连续的存储数据 BLOCK 的块设备,供上层的 Distributed File System 分配使用。Pool 和 SG 是一对多的关系。
Storage Cluster Manager:负责 Storage Service 以及 Segment Group 的 HA 调度,以及维护 Pool 和 SG 的对应关系。
Cold Backup Service:接收到 WAL LOG 后,进行增量备份,根据增量备份,可以灵活的生成全量备份和差异备份
可以看到,上面中除了 DB Engine 和 DB Cluster Manager 外的所有模块构成了一个与数据库引擎无关的用户态分布式文件系统,命名为:CynosFS。
可管理性: 一键式部署启动或停止计算资源和内存资源,可使用 实例管理器 查看有关数据库实例的关键运营指标,可使用最新修补程序不断更新的数据库实例,通过数据库引擎版本管理,控制是否修补实例,以及何时进行修补。
可扩展: 计算按需扩展,而存储服务自动扩容,随着数据库存储需求的增长而自动提高数据库容量大小,其容量将以 10GB(不含存储副本)增加,最大可增加到 256TB,无需为数据库预配置多余的存储空间。
安全可靠: CynosDB 在腾讯云 VPC 中运行,将数据库隔离在用户的虚拟网络中,并使用行业标准加密 IPsec VPN 与用户本地 IT 基础设施连接,可以配置防火墙设置并控制对数据库实例的网络访问,CynosDB 与访问 CAM 成,通过身份管理和策略管理控制资源(例如,数据库实例、数据库快照、数据库参数组、数据库事件订阅、数据库选项组)执行操作。
高性能: 低抖动高吞吐,使用各种不同的软硬件技术组合,如将重做日志写入存储,异步合并数据页,数据库备份和重做恢复下推到存储系统进行异步化处理,从而确保数据库引擎充分发挥计算、内存和联网资源,写入操作可通过数据库引擎批量进行,同时存储系统基于 SPDK 和 RDMA 的零拷贝技术,减少操作系统上下文切换引起的性能损耗。
降低成本:通过分布式计算存储实现无服务器架构,通过自动运维减少人工干预,极大的降低了用户成本。
平滑上云:全面兼容 MySQL 5.7 和 PostgreSQ 10,实现企业的平滑迁移和快速上云。
CynosDB 极致的性能,以及对于主流开源数据库的兼容,使其成为众多高性能企业应用“上云”的最佳选择。
正如 Oracle 现任 CEO Mark Hurd 在回答 Forbes 的采访中所说:“节约成本和敏捷创新已成为企业上云的核心驱动力。”这也是贯穿于云原生数据库 CynosDB 的核心设计理念:应 “ 云 ” 而生 —— 云原生数据库面向服务架构“Cloud Native”;全面兼容新版的开源数据库 “Comprehensive”,极致的内核级优化与新硬件技术相结合“Cohesive”,实现全托管智能运维“Creative”,无服务器架构的按需按量计费“Cost Effective”。
在未来,CynosDB 致力于让用户专注于业务端应用的研发,为用户提供灵活的、敏捷的、可持续的,兼具新特性、高性能和低成本的新一代云原生数据库服务。
以上是关于腾讯云发布新一代自研云原生数据库CynosDB的主要内容,如果未能解决你的问题,请参考以下文章
腾讯云新一代数据库正式发布,兼容MySQL和PostgreSQL