BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

吉永光:腾讯云的设计理念是大道至简
录制于:

| 受访者 吉永光 关注 0 他的粉丝 作者 InfoQ 关注 13 他的粉丝 发布于 2016年9月5日 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。
19:13

个人简介 吉永光,腾讯云基础架构部存储产品副总监。

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

   

1. 各位InfoQ网友大家好,现在我们是在QCon2016北京现场,作客专访间的是腾讯云的吉永光。第一个问题,想请您简单介绍一下您的从业经历。

吉永光:个人从学校毕业到现在,一直是从事存储方面相关的开发工作。数据对于一个企业是它的核心资产,存储作为它最后端的最终归宿,责任非常重大,从研究生期间就觉得它是一个未来非常重要的发展方向,所以毕业以后选择去相关公司,当时从事的是企业集中存储相关的开发工作,就是传统的存储服务器、双控磁盘控制器等的开发工作。

随着社会的发展,工作了大概几年之后,云存储相关的技术开始兴起,当时觉得是非常重要的一个后期的发展方向,对这方面也非常感兴趣,刚好腾讯云这边有非常合适的机会,提供分布式存储系统开发的相关职位,就加入了腾讯云,一直从事分布式存储相关的工作。加入腾讯以后经历了腾讯云存储系统第一代、第二代的开发,相信在后续几年会持续在这方面为广大的用户开发出更多更好的存储产品。

   

2. 我们知道这几年尤其是物联网发展之后,数据存储量越来越大了,腾讯云存储本身在发展过程中基础网络有没有遇到问题?

吉永光:腾讯云的基础网络一直处于飞速发展阶段,作为存储产品来说它一直处于网络最后端,直接构建在物理网络之上。我们在过程中也经历了发展的过程,最前期物理网络本身的容灾性没现在这么好,我们在构建存储产品前期产品时候,需要花费非常大的精力做基础架构上的容灾。随着腾讯基础网络的发展,物理网络的容灾性也越来越好,我们就更关注充分利用网络的性能。比如我们现在整个网络已经全面启动了千兆到万兆的升级过程,存储软件也需要适配这样一个过程,充分发挥万兆网络的性能优势。我们在软件开发过程中会更注重软件的运行效率,比如我们会采用zero copy机制,降低各个模块交互间CPU占用,减少数据网络延时。第二块,充分利用现在多核CPU的性能优势,采用多进程的方式充分发挥我们的计算能力。第三块,在容灾这一块,本身虽然基础网络已经越来越好了,但是用户对容灾方面的要求越来越高,这一块在容灾架构上我们不断做改进,从之前分钟级别的容灾能力提升到秒级别的容灾能力。

   

3. 您刚才讲基础网络的发展,SDN方面外界说你们用DPDK用得比较多,你们的SDN网络架构是基于英特尔的DPDK去做的,还是用其他方式?

吉永光:我们的存储网络是基于非常底层的物理网络来构建的,DPDK更重要的场景是LB的场景,在我们这应用相对来说少一些。

   

5. 内是指腾讯自有的业务,比如QQ、微信,外是指比如腾讯云上的一些用户,比如游戏的开发厂商

吉永光:我目前所在的团队开发的这个腾讯云的存储产品,主要是通过IIS的模式对外提供服务的,现在主要面向的场景是腾讯云,内部在这块的应用比较少,我们的存储系统在内部应用还处于未推广的阶段。具体的架构在后面的分享上也会跟大家做详细介绍,这里可以简单跟网友说一下,我们的设计理念是大道至简,存储系统本身就是个复杂的系统,我们在做架构的时候就需要把它尽量做到简单,才能做到可控,做到更好,所以模块只分接入层和存储层,存储层采用多副本的容灾方式,做到8个“9”的容灾能力。接入层采用了一致性哈希,能够在故障节点出现故障以后以最快的速度进行数据恢复,做到最少量数据的搬迁,尽快恢复存储的服务能力。

   

6. 哈希是用KV存储做的这块吗?

吉永光:一致性哈希可以说是KV存储,但是我们的粒度会比传统的KV存储大一些。我们是用固定的block块做的kv映射。

   

7. 腾讯云的存储是自研的,你们在研发过程中有没有参考业界或者开源社区的方案?

吉永光:我们在启动项目设计的时候调研了非常多的业界方案和开源方案,比如我们在容灾处理上参考了ceph,sheepdog等一些比较有名的开源方案,吸取其中一些对我们有帮助的。当然我们会结合自己的业务特点,有针对性的做一些修改和适配,比如在同时写三副本方案上,我们会进行折中的选择,因为不同的开发方案有不同的优缺点;比如有的可能是从接入层同时出三份写多个副本,这样会对网络带宽造成压力;有一些技术方案是先写到主副本,由主副本流水线方式写到从副本,它的流量方面是有优势的,但是时延上有劣势。我们会结合实际场景需求,采用折中的方案,因为我们接入层是部署在腾讯云前端的母机上面,要尽可能减少母机端的流量压力,会采取接入层出一份到主的方式。但是在主往从副本同步的时候会做一些自己的适配和改进,降低RTT时延。

在业界的方案调研上我们会吸收一些业界比较好的产品特性,特别是在快照这点上,比如亚马逊的快照系统跟它线上的数据是完全隔离的两个系统。现在国内所有云服务提供厂商里基本都有快照功能,有一些数据快照跟生产系统是在一起的,所以回滚速度是非常快的,有些也是采用亚马逊类似的方案,我们会比较这两种方案哪个更符合用户的业务需求,哪些产品更适合做,提供它容灾本质的能力。在这个方案选择上,我们觉得亚马逊的方案采用了隔离的方式,不但物理层做了彻底的容灾,在软件层面也做了彻底的容灾,因为它的两个存储系统的存储引擎本身是完全不一样的。假如生产系统的软件很不幸存在bug,可能导致对用户数据造成致命的伤害,如果备份采用相同的话,同样会造成丢失的情况。

   

8. 你刚才讲的让我想到两个小问题,第一个问题你刚才讲到快照,我了解到厂商是快照跟日志两个一块用,这样就会产生大量的日志,你们对日志有没有做一些压缩优化?

吉永光:我们的快照使用的是多版本的技术方案,就是当用户创建快照以后,我们会为用户写入的数据的版本号做一个自增,用户再新写入的数据会采用新的版本号去写,那么在这个时间点之前的数据就不会再产生修改,可以做到秒级别的快照创建,后台进程将快照时间点前的数据在后台同步到我们的快照系统,这里面是不需要去记日志的,对用户的线上I/O没有任何额外消耗。

   

9. 您讲到一致性的问题,有的方案对网络性能要求比较高,腾讯本身是一个大的IP,国内最大的游戏运营厂商,游戏对数据的强一致性要求是比较高的,你们这个解决方案里面有没有考虑到针对客户做强一致性的适配?

吉永光:我们的数据是采用三副本的方式,它的写入要求就是必须三份数据全部成功以后我们才对用户返回成功,所以这个层面上我们本身就是要求数据强一致。

   

10. openstack已经到M版本了,大家对它还是比较看好的,尤其是一些私有云的场景,您觉得像Ceph这种开源存储解决方案会不会随着openstack生态有比较好的前景?

吉永光:openstack对云存储和云计算推动方面的贡献非常巨大,业界有非常多的厂家采用openstack的解决方案。我们在设计过程中吸收了很多Ceph比较好的设计点,为什么采用自研这种方式?一个是我们公司的经营理念是“一切以用户价值为依归”,所以我们在这方面更注重贴近用户的需求,Ceph它不是定制化的,所以我们在自研方面会更多采取定制化的修改,更贴近用户的需求,比如性能、比如容灾能力,这方面做得更好一些。

   

11. 腾讯也做CDN,其他云厂商也做CDN,能否介绍下腾讯云存储在缓存方面的解决方案是什么样子?

吉永光:CDN缓存更偏向于用户的应用层,云存储缓存这块更偏向底层的缓存技术。为了给用户带来更好的体验,我们在存储系统里面有多级访问机制,首先会在最前端的接入层有一层缓存机制。我们评估一个存储系统的性能好坏主要有四个方面的指标,比如我们会看它的随机读能力、随机写能力、顺序读能力、顺序写能力,所有的性能优化无非都是围绕这四个维度展开的。

对一个分布式的存储系统来说,它后端是一个分散的架构,所以它的并发能力和随机能力好于本地盘的性能,我们更关注的是如何解决顺序的写能力和顺序的读能力。在顺序的写能力上面,一般用户都有文件系统,因此为我们提供了非常好的机制,有一个文件系统的cache层,用户的写入是先写到cache,pdflush转为异步写的机制,这样在顺序写上我们的分布式系统对本地盘没有太大的性能差异。

最需要解决的是顺序读的能力,因为用户发起一个读以后,他的进程可能要等待这个数据返回以后才能继续执行后续的操作。这一块我们也是采用了智能多路的预读算法,大幅度提升了用户顺序读的能力,就是我们可以探测用户有多路的顺序读。做预读非常简单,简单的预读算法只要判断用户是不是连续就可以了,但实际的应用场景往往比较复杂,可能用户运行非常多的程序,这些程序可能都是顺序读的场景,也有可能一部分是顺序读的场景 ,其它的是随机读的场景,如果用简单的文件系统的预估算法可能没办法适配这些场景,我们对它做了一些改进,可以智能探测到用户多路的数据读,充分发挥后台的分发能力,将数据提前获取到接入层,给用户非常快的响应。

   

12. 你们在块存储方面有没有什么规划?

吉永光:我们也知道国家提出互联网+的战略,目前战略还是处于启动和加速阶段,越来越多的互联网公司甚至中小企业、政府和大企业都已经通过云这种方式接入到互联网上来了。这一块我们经过很长时间的发展,目标客户逐渐从一些互联网公司、中小企业向政府、大企业转移。为了满足大企业和政府的需求,我们存储的需求也是在不断改进的,比如对接一些高性能的数据库产品,OLTP、OLAP等访问密度比较高的场景,我们已经推出了SSD相应的解决方案,后续会针对这个产品做不断的优化,推出性能更高的SSD产品。

针对一些企业用户,可能有大量的文档备份的需求,它需要更大的存储空间,但是成本相对来说比较便宜的存储介质,我们会推出更大存储空间的基于hdd介质的能够提供更大容量的存储产品。

在容灾备份方面,大的企业对容灾方面的要求更高,我们会增强目前的快照能力,为用户提供自定义的快照功能,让用户更简单、更省心持续性创建快照,对数据做容灾备份。

   

13. 你们在存储产品线上跟Oracle有一些合作,能否透露一下今年会不会有新的feature发布?

吉永光:跟Oracle的合作更多是PAAS层的应用,而我们的块存储产品主要是IAAS层面的。PAAS的后端存储可能用到我们,为了适配Oracle或者MySQL等数据库的应用,我们也持续对存储产品做一些优化。针对Oracle这种场景主要的一个计划应该是高效云盘的推出。

   

14. 这跟你们去年推出的存储产品是延续下来的吗?

吉永光:应该说有一定的延续性,我们会基于它优化我们的软件架构,来降低一些延时,会改进我们的SSD存储引擎,一个是延长SSD的寿命,一个是进一步提升SSD磁盘的LPS性能,做一个支撑。

InfoQ:谢谢您。

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT