装箱百万奖金,第六届全国工业互联网数据创新应用大赛火热报名中! 了解详情
写点什么

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

  • 2019-10-29
  • 本文字数:2853 字

    阅读完需:约 9 分钟

腾讯新一代企业级云数据库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 的蜕变,将更多腾讯内部的数据库技术普惠给腾讯云用户。


本文转载自公众号云加社区(ID:QcloudCommunity)。


原文链接:


https://mp.weixin.qq.com/s/_RN1ROloVKFfFCsMuE8_vg


2019-10-29 11:471640

评论

发布
暂无评论
发现更多内容

高承实:区块链的工业革命带来了什么?

CECBC

区块链 分布式

阿里P8以hashmap讲解如何学习jdk源码,还不学习

小Q

Java 学习 源码 jdk mybatis

Dubbo 接口,导出 Markdown ,这些功能 DocView 现在都有了!

程序员小航

markdown idea插件 IntelliJ IDEA 文档生成 Doc View

Nginx-技术专题-技术介绍

洛神灬殇

【薪火计划】03 - 从错误中认识到管理

dstweihao

管理

SQL数据库:窗口函数

正向成长

窗口函数

Jira停售Server版政策客观解读——如何最小化风险?

PingCode

项目管理 研发管理 Jira Atlassian

国网浙江建设公司推进“信用基建+区块链”建设

CECBC

区块链 国网 基建

【MySQL】如何最大程度防止人为误操作MySQL数据库?这次我懂了!!

冰河

MySQL 数据库 性能优化 数据安全 分布式数据储存

注册中心原理剖析

石刻掌纹

什么是云服务?

anyRTC开发者

音视频 WebRTC 云服务 RTC

MySQL从库维护经验分享

Simon

MySQL 主从复制

【活动回顾】WebRTC服务端工程实践和优化探索

ZEGO即构

WebRTC 服务端工程

我真的尽力了,最经典Redis面试14题,没时间复习就看这个吧

小Q

redis 学习 编程 架构 面试

《网络是怎样连接的》PDF下载

计算机与AI

网络

CSS 排版与正常流 —— 重学CSS

三钻

CSS 排版

#不吐不快# CV千千条,修改最重要。代码不规范,伙伴两行泪!

程序员小航

奇葩的经历 不吐不快

新工业化如何实现?今年的信息化百人会中藏着“懂行”密码

脑极体

会装虚拟机,删库不用跑

MySQL从删库到跑路

虚拟机 virtualbox

面经手册 · 第18篇《AQS 共享锁,Semaphore、CountDownLatch,听说数据库连接池可以用到!》

小傅哥

Java 并发编程 共享锁 Semaphore 信号量

前嗅教你大数据——什么是代理IP?

前嗅大数据

爬虫 数据采集 静态IP 代理IP 动态IP

读谱对吉他手来说重要吗?试试它提升你的读谱效率

奈奈的杂社

学习 编曲 打谱

智变的八个瞬间,京东智联云化“?”为“!”

脑极体

Springboot过滤器和拦截器详解及使用场景

AI乔治

Java spring 架构 Spring Boot

11.11 应对海量访问的网络基石 京东智联云自研交换机发展之路

京东科技开发者

运维 网络 交换机

MySQL中的锁机制

AI乔治

Java MySQL 架构 线程 锁机制

Redis 持久化之 RDB 与 AOF 详解

AI乔治

Java 架构 redis持久化 redia

甲方日常53

句子

工作 随笔杂谈 日常

vue项目实战经验汇总

徐小夕

Java 面试 Vue 大前端 Vue3

Glide.with(view)挂在了谁的生命周期上

mengxn

生命周期 Glide Activity Fragment

什么是低代码(Low-Code)?

移动研发平台EMAS

工具 研发效能 低代码 开发 代码

腾讯新一代企业级云数据库CynosDB(NewCDB)了解下_文化 & 方法_腾讯数据库技术_InfoQ精选文章