为什么CynosDB叫真正的云原生数据库?

本文由腾讯云数据库发表

注:本文摘自2018年11月22日腾讯云数据库CynosDB新品发布会的演讲实录。随着互联网信息的发展,大家也对云这个词汇也不是特别陌生了,作为全球首选的云服务厂商之一的腾讯云,依托腾讯多年的业务积累和技术沉淀,我们推出了高性能、低成本、安全可靠的整体数据服务解决方案。并且随着客户数据日益增长,也做了相关的调研和分析,推出了腾讯云新一代自研数据库。我这里先卖一个关子,由我们这边的技术嘉宾给大家揭晓我们相关的数据库内容。

——————————我是分割线————————

img

大家下午好!我是腾讯云数据库产品中心NewSQL的产品负责人,我叫刘峰。我想在座的各位有谁了解什么叫NewSQL?我给出一个比较狭义的定义,NewSQL其实就是SQL加上NoSQL。我们说数据库有三个比较重要的历史阶段,第一是SQL标准的引入,第二个是NoSQL的流行,第三个是NewSQL的诞生。如果前两个重要的历史时期你们错过了,那么此时此刻是第三个重要的时刻,腾讯云自研的NewSQL数据库的诞生。

我们首先来看一下云数据库有哪些类型,有两种,搬迁和云原生。云计算时代的到来,厂商需要提供给客户云数据库服务,一个比较直接的想法是,作为云厂商我们可以把传统的数据库搬到云上来,给客户以租用的方式提供服务。这是大多数我们的云厂商提供服务的方式。当我们做了这件事情以后,我们发现传统数据库在云上有很多的问题,而这些问题是传统数据库既有的问题,在云上并没有得到解决。同时,我们发现传统数据库也不能适应云在扩展性、可靠性和规模化的优势。这个时候,就迫使我们云厂商来考虑,如何将传统的数据库和云数据库、云计算做一个融合,这个融合的点,我们称之为云原生。

举一个比较恰当的例子,大家可以理解为传统的数据库搬到云来提供云数据库服务是一种搬家模式,而云原生数据库提供的是一种“拎包入住”的方式。

刚才我们提到了传统数据库有很多问题。现在大家看一下传统数据库有哪些问题。

第一个问题,备份回档慢。这是一个经典的利用传统数据库在云上的备份回档的结构,如果要做备份回档我们需要把原有的数据拷贝一份到云存储上,同时将云存储的数据拷贝到用户数据库的实体上。1T的数据需要使用3个小时,2T的数据需要6个小时,如果备份回档3T的数据,就是今天晚上我就可以先下班了。

第二个问题,故障恢复慢,单独的数据库支撑的可能性是很低的,如果数据库宕机了,业务就中断了。通常的说法是,我们在主数据库边上会挂一个从数据库,从数据库会从主数据库来同步数据,但很不幸的是,大多数情况下,如果你的主数据库压力比较大的时候,从数据库是不能得到及时的数据更新的。举一个不恰当的例子是,在双十一购物高峰的时候你从购物网站选很多礼物放在购物车,而恰巧主数据库宕掉了,即使有从数据库,但却没有及时得到主数据库更新的数据,所以你会发现你购物车里的那些东西都已经不见了。我们认为在传统数据库上这种故障恢复慢的问题还是比较严重的。

第三和第四个问题,是纵向扩展弱、横向扩展弱。传统数据库是盒子,里面装的是数据,如果想扩展传统数据库需要一个更大的盒子。举一个更形象的例子,比如说我们自己开发了一款游戏,刚开始的时候我们认为这个游戏没有多少用户玩儿,我们用了一款数据库是1个CPU、2G内存100G存储空间,很幸运的是我这款游戏大卖了,这时候发现CPU的内存不够用了,需要扩展,传统数据库的做法是什么?是创建一个4核、8G、1T的数据库,之后把数据库搬迁到这里。这涉及到数据库迁移的问题,那么1T数据3个小时,2T数据6个小时,3T数据我今天也干不完,明天再接着干。相信这种服务提供给客户,客户也不会满意的,同样横向扩展是相同的问题。

第五个问题,维护成本高。为什么说维护成本高呢?如果使用传统数据库,既要人为地进行手动数据备份回档,又要参与横向和纵向的扩容,又要做故障恢复,人工参与的成本是很高的,同时加上原有架构的效率非常低,也导致时间成本和人工成本非常高,所以说我们的维护成本非常高。

第六个问题,资源利用率低。传统数据库是大盒子,盒子里面装CPU、内存和硬盘。但我需要很大的CPU、内存和硬盘吗?并不永远是这样的,有时候我们只需要更高的CPU、更大的内存,有时候需要更大的硬盘,难以满足用户在三个维度方面不同的需求正是传统数据库很大的问题,很多资源用不了那么多的时候就造成了资源的浪费。

第七个问题,可用性低。举一个上个月发生的例子,一家被微软高价收购的全球性的社交编程和代码托管网站,由于它用传统数据库主从架构在两个数据中心做了高可用性,美国政府更换了两个中心中间的光缆,中断了43秒,就是这43秒造成了整个网站24小时的宕机和瘫痪。大家可以想像,利用传统数据库架构,即便是这样的高科技公司都遇到了服务不可用的问题,何况是我们身边的企业。

为了解决传统数据库的问题,我们作为云服务厂商提供了一个完整的一站式的解决方案——腾讯云自研的数据库产品CynosDB。CynosDB源于单词Cynosure,是古希腊神话中北极星的名字,就是北天小熊座最亮的一颗星,现译为引人注目的人或物、天生的焦点。CynosDB是腾讯云自研的高性能、高可用、企业级云数据库,兼容开源数据库MySQL和PostgreSQL。

我们来看一下我们当初是怎么考虑要设计这样一款数据库的。借用当下比较流行的词叫“C位”,我们在CynosDB设计之初考虑了与C相关的设计特性。

CynosDB核心设计理念:

第一,Comprehensive ”兼”容并包,即全面兼容新版开源数据库MySQL和PostgreSQL,而目前业内厂商大多只能兼容一种。我们兼容了两款主流的开源数据库,这样做可以帮助企业实现平滑迁移。

第二,Creative分而治之。传统的数据库架构其实就是一个大盒子,怎么分才能把这个内存、CPU和磁盘进行合理的分配,减少资源浪费呢?我们的实现方式是分而治之,将计算与存储分离。不放在一个盒子里,放在多个盒子里面。实现了这种结构,就相当于我们需要在计算层和存储层之间进行通讯。通讯是通过网络来进行的,这使得我们需要减少网络通讯的流量,所以腾讯的CynosDB实现了一个“日志即数据库”的架构。

第三,Cloud Native应“云”而生。我们的数据库是搭建在腾讯云现有的高效稳定的云服务之上,所以我们能快速地搭建出高性能、高可用、高可靠的一套云数据库。

第四,Cost Effective事半功”倍”。我们需要一个在性能上能超过传统数据库的云数据库,并且可以给客户减少成本压力,因为云计算的本身其实是要给客户一个很实惠的服务,所以我们是说,可以实现真正的按量计费和弹性的扩增容。

第五,Cohesive相“辅”相成。极简的软件优化释放硬件红利。我们每年都会关心苹果手机的发布会,发布会上其实苹果每年都会讲我们今年有更高的CPU,我们有更大的存储量,大家有没有想过有一天,我们的苹果手机会运行得越来越慢,但苹果告诉你通过软件的优化,让原来的iPhone4、iPhone5、iPhoneSE,不需要升级到更快的CPU,更大的内存就可以用所有的AppStore的App呢?也许有一天苹果会做到这个,但CynosDB今天已经做到了。

现在看一下基于核心设计理念建构的CynosDB的产品架构。我们把盒子拆分了,我们将计算层独立出来,而存储层是用云自带的分布式存储来实现的。中间的通讯是通过网络进行计算层和存储层的通讯。我们的架构实现了真正的兼容多种数据库引擎,因为我们将计算层独立出来之后,我们的计算层就可以兼容多个数据库引擎。计算与存储分离之后,存储是一块独立的服务,大家可以理解计算是一层服务,存储是一层服务,外围我们接了云网络安全服务,不同的维度来保证安全可靠。我们给客户提供软件优化与新硬件相结合的解决方案,可以基于普通硬件来满足自己高性能、高可用的需求。如果有更高的要求,因为我们是一个企业级的数据库,我们可以结合新硬件,比如说我们基于SSD的SPDK的驱动和RDMA的网卡提供性能更高的数据库服务,这个选择权我们交给了客户。

所以我们说,CynosDB产品架构是基于云服务和普通硬件的数据库架构,我们释放硬件红利、不转嫁硬件成本。

后面重磅介绍一下我们CynosDB的一个核心部件叫做CynosFS可计算智能存储,这是腾讯独创的一个存储系统。我们在国内率先实现了“日志即数据库“的体系架构。什么意思呢?大家看到左边其实是传统数据库的一个体系架构。当传统数据库发生了一个写操作的时候,计算和存储之间需要进行诸多的IO写入。我在存储和存储备份之间也要同样地进行IO操作,其实是极大地增加了系统的负载。而CynosDB是右边的做法,我们将诸多的IO合并减少为只写日志,所以我们称它是日志即数据库,也就是说在我们的系统里只存在于数据的日志,我们称之为极简IO。这相当于我们把繁忙的北京二环改造成了一个全方位的、立体的轨道交通,极大地提高了系统的运行效率。除此之外,CynosDB还实现了存储的运维自动化,大家可以看到日志写完了之后是可以返回的,可是在存储底层,我们自动把数据存成三个副本,是通过分布式一致性协议来维护的。特殊的情况下,如果一个副本产生了错误我们会从另外两个副本自动地拷贝数据到损坏的副本上来修复数据。同时,蓝色的部分是我们的数据页,如果系统需要访问数据页,我们会义务地将日志转化成数据,并且这套系统实现了自动扩缩容,所以我们称之为运维自动化的分布式存储系统。

我们来看一下CynosDB利用这种独创的架构和独有的产品创造的能力

首先,我们是业内首家兼容多个数据库引擎的云数据库。

第二,性能突破100万大关,实现了商用数据库同等级别的极速性能。

第三,存储容量达到了128TB,实现了国外云数据库领先厂商一倍的性能和存储量。

第四,告别分钟进入秒级时代,之前提到了数据库的种种痛点,我们有恢复慢、主备切换不可控的问题,而CynosDB将整个计算节点、故障节点恢复的时间从分钟级带到秒级。我们在计算层和存储层分离之后可以实现快速的恢复,让故障节点高可用。

第五,秒级备份,刚才讲到备份回档1T数据需要的时间,CynosDB在这个痛点上进行了极大的提升,基于快照的备份和回档,实现了秒级的飞跃,比传统的备份回档的速度提高了180倍。

讲到上面的这些产品能力,我们要看一看CynosDB的用户价值,这是用户最关心的。

第一,降低成本,提供了一款具有超高性价比的数据库产品。我们是基于普通硬件和软件的极简优化才做到这一点。达到性能与可用性与商用数据库相当的水平,成本只有约1/15。

1)从显性成本来讲,云存储降低了硬件采购的成本,且我们的成本是低于国外商用数据库一个数量级。2)CynosDB将存储计算分离之后,存储实现了真正的池化。大家知道,规模化可以降低边界成本,并且产生边际效应,我们通过分布式计算存储将存储实现了真正的无服务器架构,实现了一个存储层的智能角度,极大地降低了存储的成本。也就是说,你可以根据自己的使用量来分配你的成本,不像我们原来需要一个盒子或者是需要一个更大的盒子。3),刚才我们讲到实现了诸多的自动运维的功能来减少人工干预,这相当于是降低了我们用户使用的隐性成本。

综合三个维度的成本的节约,我们的成本只有传统商业数据库的1/15。

第二,灵活的弹性能力。大家如果有在现在的云上面购买数据库的经历会知道,我们如果买一个数据库第一是需要多少CPU,第二是需要多大的内存,第三是需要多大的硬盘。要有CynosDB就不需要这三步操作了,不需要知道你要多大的硬盘,购买完之后需要10T,付10T的钱,需要百T付百T的钱,如果不需要存储可以不用花钱。找到了真正的自动扩缩容而按使用量付费。

第三,平滑上云。全面兼容MySQL5.7和PostgreSQ10,这是两个目前更新的开源数据库的版本,原有应用零改动,实现了企业的平滑迁移和快速上云。

第四,安全可靠。我从三个维度来给大家讲一下我们怎么样做到安全可靠的。这是我们云数据库乃至云服务的一个生命线。1)纵向维度,CynosDB存储实现了一个自动的多版本维护,就像刚才我讲到,我们写一份数据在我的存储其实是可以自动维护三个副本,在纵向上是增加了数据得多副本;2)我们提供了跨区域的高可用,你可以多添加几个副本到另外的数据中心区,即便是这个数据中心的数据宕了,那个数据还可以提供,我们提供了高可用性,进一步保障安全可靠;3)同时支持腾讯云现有的安全组和VPC进行网络隔离,腾讯云现在的网关服务可以抵挡黑客攻击和DDOS攻击。

我们将刚才所列举的诸多用户价值放在具体的应用场景来看,我们如何能解决企业的问题。

第一,高性能、高可用的企业应用。我们可以平滑上云,保证业务连续高效运转,可以降低企业的运营成本,可以通过自动运维减少人工干预。这里给大家爆一个料,我们的可计算智能存储将来会朝着人工智能领域发展,我们将来会将人工干预减少到最低。所以我说,CynosDB天生适用于传统企业,支撑传统企业的关键核心业务。

第二,互联网和游戏业务。1)应对峰值业务。我的同事也介绍到了,无论是电商还是游戏,互联网业务经常有很大的业务量的峰值变化。CynosDB灵活的计算扩展天生适合应对峰值业务。游戏领域我们经常会做冲在线用户数的活动。传统情况下,运维人员会提前一个月购置设备,等活动结束这个设备就不需要了,还需要把这些设备注销掉,可是CynosDB不需要这项工作。2)快速备份回档。刚才讲到我们将备份回档的速度提高了180倍,可以想像当你的游戏版本出现问题的时候,你比竞争对手更快地修复问题,会给客户提供更快的游戏服务。3)海量可扩展存储,CynosDB是一个分布式的共享存储,游戏的公司可以利用它来实现混服和合服的操作,同时不需要用多个实例来支撑游戏业务了。所以CynosDB天生适合应用于互联网公司、游戏和小程序。

此文已由作者授权腾讯云+社区发布,更多原文请点击

搜索关注公众号「云加社区」,第一时间获取技术干货,关注后回复1024 送你一份技术课程大礼包!