1. 我是InfoQ主持人,现在在腾讯大厦,很高兴腾讯大讲堂今天能介绍钟超宇来接受我们的采访,那首先超宇请您先自我介绍一下。
钟超宇: 我这边是腾讯基础架构部外部云中心副总监钟超宇,我这边负责的业务主要是给腾讯云提供云存储方面的一些平台服务,包括云数据库,NoSQL,包括存储,然后还有云硬盘,还有现在正在公测的云对象存储COS,这四个平台服务。
2. 我们现在说起云数据库的服务,其实您之前也说过,就是无论是腾讯的CDB,还是阿里RDS,还是新浪的这个RDC,它都是后面跑在物理服务器上,性能上它做不到跑在分布式系统上。也有用户说,一开始省钱用VM跑数据库,但是踩过许多坑,还是切换到RDS上。为什么这个问题这么难解决呢?
钟超宇: 这个是分布式SQL服务的一个最难搞的地方,现在包括腾讯的CDB,阿里RDS,包括亚马逊,他基本上都是只能跑在一台物理机上面,如果你再跑多台就成了分布式的数据库,那分布式的数据库他的一些关联查询,一些分布式事务,这些东西都是很难去搞的,要么是性能上会比较差,要么就成本上比较高,所以基本上还没有一个在互联网界落地非常好的一种方案。所以我的意思主要是说,云数据库这种东西很难去跑在分布式系统上,包括我们现在CDB的高性能版,也只是在磁盘、在存储层做到了分布化,就是它的存储是可以无限扩大,但是像CPU、内存这种资源还是受限于一台实际的物理机,不可能再多,所以当一个用户的数据,他一台物理机已经存不下的时候,平台是没办法解决,那用户只能做的是,我去分库,或者分表,去把它打散到更多的机器上,那打散之后你就要自己去管理一些路由,管理一些访问,管理你的数据的一些腾挪搬迁,其实对用户来讲是一种负担。所以平台上一直是想去解决,但是包括从学术界上看,也是非常麻烦的一个问题,一旦拆开之后,很多事务是做不了的,所以主要是这么一个情况。
3. 所以刚才你提到的让CDB跑在分布式存储上的方案,现在进展大概是什么样的情况?然后现在就从全球范围内来看,你觉得是谁做得比较好的?
钟超宇: 全球呢,当然是亚马逊了。说CDB跑在分布式系统,主要是说我们现在CDB高性能版,它的存储层做了虚拟化,就是说所有的数据都是存在后端的一套集群系统,但是在CPU和内存方面,它仍然是受限于一台物理机的,就是你去购买的时候,你会发现,CDB的实例规格是有上限的,它的内存最多就是这么大,CPU核最多就是这么多,不可能再多了,再多的话,你的业务就要自己去购买,更多的实例自己去混合一下。
4. 现在CDB是有分不同版本,普通版和SSD版,和CMEM的用户量,现在分别到了多少数量,然后CDB的单机版现在大概是有多少购买?
钟超宇: 从数据量上来讲,开放给第三方用的数据量不是非常多。我们CDB加CMEM总共有500T的数据,但是有400T都是腾讯的内部业务在用,只有不到100T是第三方的数据。
单机版实际上是我们去年的时候,去北京访谈了很多开发商,就去问,你们为什么要自己去搭MySQL,这么麻烦,为什么不用CDB啊?就是线下收集到的一些用户需求,有很多人都是搭一台单机,我每天去做一下备份,如果有问题的话,我就用昨天的备份去恢复一下。后来我们针对这些用户需求去开发了一套CDB的单机版,但是怎么说呢,这个产品现在卖的不算太好,我想可能主要是高性能版的降价造成的。
5. 之前陈磊那边提到过,就是你们数据库这块,每个用户他是被分配自己的数据库实例,用这种机制来保证隔离,能具体说一下这方面尤其是IO方面是怎么做的隔离吗?
钟超宇: 因为做隔离的话,其实最麻烦的是IO去做隔离,这个是比较难搞的,但是像我们现在的CDB高性能版,它的IO全部会转换成网络的带宽,所以我们会在网络层去做一下带宽的流控,就说我每个给你的数据库的实例,你的CPU核数都是固定、绑定的,内存也是固定的,就那么多,然后你的IO呢,被我转换成网络带宽之后,它会有个带宽的上限,就是你最多跑到这么多带宽,不可能说别人跑了很大带宽,然后你受到影响。所以主要是通过流控去做这种质量的保证。
6. 他本身是一个cgroups的隔离?
钟超宇: 因为用cgroups会有一些性能上的损失,所以我们在前边主要用的是一些绑定的手段,然后在网络上实际上自己去搞一些隔离,因为所有的网络都是经过我的系统去转发的,所以我是可以控制它的延时,各种带宽的资源的占用情况的,所以这种就比较好做。
7. 所以用户IO用超的时候,你们也不会去惩罚他?
钟超宇: 这个不会。而且像我们做流控之后,你的IO是不可能用超的,你的上限是多少,那你最多用到那个上限,再上不去了。
8. 弹性云硬盘这块,腾讯云之前也灰度做了很长一段时间,大概有个半年,然后现在还是工单申请去使用的一个状态,那么现在主要还是监控它在哪方面的表现,然后你们是怎么平衡这个监控的时间,跟创新的速度做一个平衡?
钟超宇: 云硬盘确实灰度的算所有产品最慢的,也是最漫长的一个。其实云硬盘这个东西,很早就已经用在CDB的高性能版上面去了,虽然版本不太一样,但是都是同一个产品形态。那为什么云硬盘,我们要灰度这么久,而且这么慢?最主要的一个原因,因为这个云硬盘的服务太底层,它跟其他服务不一样,因为它是在你的虚拟机里面的,就是表现为一块硬盘,包括你的操作系统都是落在云硬盘上,那你的数据也是落在云硬盘上,一旦这个云硬盘出现任何的不可用,轻的就是说你的程序会挂住,重的你的操作系统可能会挂住,一点响应也没有。
另外就是因为块存储的数据一致性也是比较麻烦的问题,块存储上面还有文件系统,文件系统还有一些脏数据cache之类的,所以块存储的话,数据一旦你搞错一个扇区或者几个扇区,可能整个文件系统都不能再用了。所以从数据安全上,它是比其他系统的要求要高。
所以我们其他系统都是用的是主备的,双机冗余的方式,只有CBS云硬盘这种是用的三份,数据前前后后存了三份,而且做了一致性的很多方面的优化,所以从数据的安全性方面,它的要求是很高的。
然后从可用性方面,它的要求也是非常高的,所以说云硬盘,我们就一点一点的去灰度,主要是求一个稳,不能出任何的事故,因为我们去全球去看,亚马逊,我记得近两年的几次事故,好像有两次还是三次,都是跟它的EBS是有关系的,有的是镜像风暴,有的是校验之后的文件系统重建,它都是要耗费几个小时,或者十几个小时,对用户的影响是非常大的。所以就是所有的研发团队最看中的云硬盘的东西就是必须要稳定,不能出任何的事情,因为你一旦出事情就是大事情,这是肯定的,所以灰度的策略会比较慢,主要是安全,稳定。
9. 目前有出过情况吗?
钟超宇: 目前没有,因为演习一直在做,到今天还在做,各种情况的演习,而且为了保证CBS安全性,新搞的机房我们全部都是双网络的,就是两个网卡,两根网线,连到两个交换机上面去。腾讯其他的资源,机房全部都是单网络,唯独给云硬盘用的机房全部是双网络,而且这个双网络只给云硬盘去用,就是什么意思?我这台交换机坏掉,我去到另外一台继续跑,所以你会发现你的云硬盘是永远不会挂的,它永远是可以访问的,哪怕你虚拟机死机它云硬盘也是可以访问的,非常的高可用。 从接受技术创新来讲,可能在用户看来表面上它是一块硬盘没有什么创新,实际上后面也是有比较多的很小的一些创新,因为像云硬盘这种它是双网络,然后里面还带了SSD、闪存去做一些加速,所以它的随机写的能力,随机读的能力都是比较好的,然后像三份存储,双网络,增加SSD,然后又把价格做到三毛五每G每个月,这其实是非常有挑战的一件事情。
10. 你比较腾讯云存储,相对于其他业界的这些存储的服务商比,你觉得腾讯最大的特点在哪些地方?
钟超宇: 就云存储这方面来说,我觉得跟其他的对手去比,主要还是一个技术优势和运营优势,因为所有的产品其实在外面看来,云数据库也好,NoSQL也好,云盘也好,他只是对用户提供的接口的形态是不一样的,实际上在后面存储系统,就是那几个,每个介质都各自有一套自己的存储系统,所以存储系统是相对稳定,只不过上面的接口形态会比较多,所以,而且像他们这些产品后面用的一些存储系统,最早有05年开始研发的,还有10年开始研发的,所以都是研发的时间是非常久的,而且开始都是在腾讯的内部业务去用,腾讯的内部业务访问量比这些开发商的业务要多一个数量级或者几个数量级,所以是经过了腾讯内部非常多的、很多年的一些验证之后,用的一些存储平台,所以说这些系统都是经过了常年的运营。
互联网的产品从设计到开发可能就三、四个月就可以出来,但是你在后面运营的过程中,你会发现很多你没有想到的问题,所以一个平台要稳定,你是要运营至少是半年或者一年的时间,所以像我们给云数据库,存储等等,或者云盘之类的,后面提供的存储系统都是经过多年的一些运营,你会发现很多你见过的没见过的一些BUG,一些问题,甚至各种问题交错在一起,引发的一些极端情况下才会出现的问题,所以到最后开放出来,你的用户才会感觉到,这个东西是非常稳定的,实际上前面他可能已经采过无数的坑,踩到今天,所以说,我觉得运营的优势也是一个腾讯存储的一个比较有长处的地方。
11. 现在你们已经推出了高性能的CDB的版本,未来在这一块还有什么新的计划呢?
钟超宇: 从趋势上看,存储虚拟化是一个云存储必须要去做的事情,因为像如果是简单的把数据库搭在本机的硬盘上,这种是最简单,最快捷的,但是后面优化会很难做。如果你不知道如何去降低你的成本,或者增加更多的形态,这个是很难做的,所以我们会推出CDB的高性能版,就是存储虚拟化。
未来的话,我们还会推出第四代CDB,这个目前还在实验室里面,主要就是在存储去做更彻底的虚拟化,包括硬盘、文件系统全部都是不需要的,全部会走网络,但是它会对目前整个云数据库的计费体系产生一些颠覆,因为本质上它不存在一个硬盘的概念,也不存在文件系统的概念,就是你会很难说你的数据库是多大容量的,这个是说不清楚,用多少是多少。它会颠覆目前的计费体系,所以说目前还在实验室里面去做更深入的研究。