腾讯云刘颖:块存储深度剖析

个人简介 刘颖,腾讯云总架构师,先后从事过外网统一接入网关,流量实时监控和在线回放系统,CDN,高性能防火墙,虚拟化调度管理平台,云应用引擎(CEE),分布式网络块设备的设计和研发,以及Linux TCP/IP协议栈和内存管理优化。致力于建设高性能、高可用、安全的云平台基础设施。

QCon是由InfoQ主办的全球顶级技术盛会,每年在伦敦、北京、东京、纽约、圣保罗、杭州、旧金山召开。自2007年3月份首次举办以来,已经有包括传统制造、金融、电信、互联网、航空航天等领域的近万名架构师、项目经理、团队领导者和高级开发人员参加过QCon大会。

   

1. 大家好,我是InfoQ的社区编辑刘宇,也是Puppet实战作者。今天非常荣幸邀请到腾讯云的总架构师刘颖来做本次专访。首先请刘颖介绍一下腾讯云目前的一些情况以及未来的发展方向。

刘颖:腾讯云是2013年9月9号正式对外开放的,即对所有的开发者进行服务。其实在9月9号之前,它一直服务于腾讯的开放平台,在腾讯的开放平台上,也成长出了很多优秀的开发商,包括游戏、工具、电商等各种应用。经过开放平台几年的磨炼,也达到了比较高的可用性,也积累了比较丰富的运营大型云平台的经验,因此今年9月9号,我们决定全面开放。

我们云的特点大概是这样的,主要是IaaS,也是一个PASS平台,它提供云主机,SQL、NoSQL、分布式块存储;也提供腾讯一些特有的服务,比如移动加速,提高移动网络的可用性和可靠性以及延时,腾讯云推动,帮助海量消息妙计触达终端。除了各种基础的服务,也针对了游戏、微信等行业提供了一个比较完整的解决方案,让开发者更关注于应用逻辑,其它的事情云平台都帮它搞定。

腾讯云未来除了要进一步的提高服务的可用性,还将更深入的去理解一些垂直行业,做出更符合用户需求的云服务。

   

2. 关于腾讯的块存储方面,能否从它的特点和功能方面再展开谈一下?

刘颖:块存储的表现形式是磁盘,分布式的存储在网络上的各个存储节点,所以叫网络块存储。用户可以在快存储上面,搭建任何存储的类型。比如Mysql, Memcached,或者MongoDB,非常灵活,就像本地磁盘一样。

另外,它的特点主要有两个:第一,它的性能,特别是随机的性能是比较好的,如果是本地磁盘的话,它的随机性能取决于块磁盘的极限的性能,如果在网络上,可以把磁盘打散存放,一个磁盘可以分布在若干个存储节点上面,这样可以达到并发的读和写的能力,所以说对随机类型的读写,它的性能优势是比较高的。第二,存储可以通过几个副本的方式,或者是一些冗余编码的方式来去达到一个比较高安全性。另外,建了一个专门的存储网络,针对块存储这种大快网络报文的访问形式,延时更低,吞吐量更高。

   

3. 在随机读写方面是如何去保证,有哪些技术手段?如何对比数据的?

刘颖:网络上延时上的开销,这是网络存储里面,必须要面对的一个问题。首先我们可以针对存储的特点去把这个网络变得更高效。磁盘读和写的平均块是比较大的,我们可以把这个网络的MTU做得更大,也就是说减少报文来回的次数,通过这样一种方式,降低网络的开销。其次,我们还可以在本地磁盘通过Cache的方式,让一些读写不经过网络。第三,可以针对后端的存储做分级。我们可以做一层SSD,或者内存的Cache,用户的写,直接就写在Cache上面, 针对一些具体的IO的类型,比如说如果是一个顺序的的读,我们可以采用预读的方式,顺序的写,可以通过适当的I/O合并来达到一个更好的吞吐量。

   

4. 你们现在做块的存储,整个性能的差异和传统做法的区别是什么?

刘颖:其实传统的做法可能更多是一些专用的硬件,他们通过一些光纤的方式来做,成本比较高,而且它的可扩展性也不是很好。而我们是基于通用服务器,这种低成本高性能的方式,这对比传统方式而言,优势更加明显。

   

5. 如果后端做这种分布式存储的情况下,在同一个机房之内,这些服务器你们不是采用的光纤吗?

刘颖:我们在机房之间会有一个专门的光纤,至少是以10G为单位,跟通常是几十G或者是上百G高速的一个网络,用于机房之间同步数据的多个副本,这样能保证整个数据更高的安全性和可用性。但是在机房内部,可能更多就是不会用专门的光纤去搭这种存储的网络,因为这个成本会很高。

   

6. 分布式的块存储和我们所了解的淘宝的TFS是类似的这种架构吗?

刘颖:可能有不同的呈现形式,有的分布式文件系统,可能对外呈现的是一种文件的表示方式;还有的是REST的表现方式;还有一些是专用的,自己特定的一些接口,可能对外呈现的形式不一样,当然路径也会不一样。如果对外呈现的接口不一样,它可能中间会经过一些自己的路径。而块存储直接给用户呈现的是一个块,输入和TFS是不一样的,最终可以以文件的方式去落地,大家的选择不一样,落地方式就会不一样。

   

7. 在块存储的安全方面是如何做好保障的?

刘颖:其实我们是完全打散的,后端有一个大的存储池。用户的块可能存在于任何的一个地方,而不是说固定的把后端某几台机器的某几个块划给他,而是随机的,用户来了一个块,是根据当时后端存储每一个load节点负载的情况来进行选择。不会说事先就会放好一个一一的对应关系,不是一个静态的,是动态的。中间可能会根据整个集群的负载甚至做一些搬迁来保证集群的负载尽量是均衡的。对于安全性而言,首先监控要做好,你需要知道每一块盘它的IO是什么样的,是不是符合预期的,是过大还是什么样。如果是过大了,我们要采用一些留空的方式,本质上就是一个I/O的QoS,如果是发现这个盘的I/O过大,它会做一些限流的方式,把这个I/O让它慢下来。当整个集群还不是太忙的只有,它可以用得多一点,当集群变得比较忙的时候,就会对其中一些用户,特别是使用量很大的用户,会让他的I/O慢下来,来保证整个集群的安全。

   

8. 除了I/O之外,还有其他地方需要考虑的吗?

刘颖:当然也要考虑到网络的情况,因为所有的I/O都是通过网络的方式到达后端的。所以说我们也要去做对用户的I/O带宽,也就是网络做很好的监控,从用户发起的地方源头,到最后端整个路径上每一个链条上都要做监控,让它没有瓶颈。监控是一个前期,如果说发现了,通过一些在线的扩容的方式,或者是限流的方式,让整个平台的安全性得到保障。

   

9. 腾讯在监控方面运用了哪些技术?数据采集的力度如何?

刘颖:监控方面基本上我们统计是实时的,就是说用户的每一个请求都会记录我们的统计里面。数据是一个实时的统计,并非一个采样的统计。每一个请求,都会经过采集和统计的一个模块。它会有两个维度,第一个是针对每一个盘的维度,另外是针对整个集群里面的维度,不同的维度,都会有不同的统计。每一个维度,超过限制的时候,它都会报警出来。里面有节点故障了,通过主动探测和watch的方式,及时的屏蔽,集群的容量或者整体性能不够,动态添加存储节点。

   

10. 最后,关于块存储方面的内容,你还有其他需要补充分享的吗?

刘颖:块存储在云里面是一个非常基础的服务,有了网络块存储以后,结合SDN的特性,虚拟机的自动迁移和快速的故障恢复才有可能性,会极大的提升云主机的可用性和弹性能力。另外块存储也是I/O里面最重要的一个环节,所以它的性能,我们也在一直不断的去提升,去满足各种场景下的性能。另外还有一些对延时非常敏感的一些类型,我们也在通过各种的方式,或者是不同的产品形态去满足用户的诉求,这是我们接下来需要持续努力的地方。

你可能感兴趣的:(腾讯云刘颖:块存储深度剖析)