百度开放云王耀:设计分布式存储系统不宜过早优化

百度开放云王耀:设计分布式存储系统不宜过早优化_第1张图片

百度基础架构部架构师、百度开放云非结构化存储技术负责人 王耀

嘉宾:王耀,百度基础架构部架构师、百度开放云非结构化存储技术负责人。2010年加入百度,先后做过搜索、消息队列、文件系统、块存储以及对象存储等相关技术的工作,现在专注于百度开放云非结构化存储的研究,也对网络安全、性能优化等感兴趣。


5月13日-15日,由全球最大中文IT社区CSDN主办的“2016中国云计算技术大会”(Cloud Computing Technology Conference 2016,简称CCTC 2016)在北京新云南皇冠假日酒店隆重举行。在本次大会的采访间里,CSDN采访了百度基础架构部架构师、百度开放云非结构化存储技术负责人王耀来分享分布式存储的相应技术问题。

百度非结构化存储系统

在谈到非结构化存储系统能解决哪些问题时,王耀表示,非结构化存储是比较传统的技术存储,主要分3大块:文件系统、对象存储和块存储,这3块涵盖了公司内部,包括业界大部分的基础数据的存储需求。分布式文件系统分两类,一类支持随机读写,一类支持全顺序读写;随着虚拟化的发展,块存储的需求也变得越来越强烈,块存储主要提供随机读写的功能,并且支持快照相关的功能来提供CDP(持续数据保护),然后直接挂在虚机上,为虚机提供虚拟硬盘的服务;对象存储的需求则是大量的,在整个移动互联网爆发之后,有特别多的多媒体的数据需要去存储、去分发,所以,CDN和对象存储是整个多媒体存储和分发的系统基石。

王耀表示,分布式存储是根据业务需求来发展的。随着一些新业务(金融、大数据分析)的发展,会驱动百度在OLAP和OLTP等相关的领域做一些事情,来满足在云上的数据分析以及数据处理的需求。

王耀还称,存储系统在产品形式上的边界越来越模糊,对象存储主要的特点是immutable(不可修改的),而百度利用对象存储来存储一些不可修改的数据,比如视频的切片和图片的切片。

分布式存储系统的设计原则

谈到分布式存储系统的设计原则时,王耀列出了重要的三点:

  1. 不要过早地优化、过早地设计。对存储系统来讲,设计越复杂,就会导致实现越复杂,分布式系统中有很多时序相关的东西和问题,不能像单机一样去调试,所以,在设计阶段就要把问题想清楚、把方案做简单。

  2. 故障容忍。在分布式系统当中,故障是实时存在的,这就需要做一些故障容忍。百度最主要的措施是对故障设立一些隔离区域,在存储当中会设置一些Region和Zone的概念,然后把数据按照租户隔离的方式,隔离在不同的Region和不同的Zone中,所以,单个的Region和单个Zone的故障是不会影响到全部的用户数据的。

  3. 无处不在的流控,系统会有各种各样的异常发生(突然间大量的创建、大量的上传、大量的删除、大量节点的故障),这会依赖很多的模块去处理,为了保证服务质量,需要在很多的流程和模块上都有流控的措施。

分布式存储技术的瓶颈和优化路径

王耀也谈到,分布式存储技术的软件没有跟上硬件的发展,除了容量能够享受到硬件发展的红利以外,很多IO的能力都没有发挥出来,这是受限于历史的原因,即本地的文件系统的限制,比如,File System有很多不必要的开销。百度也拿出了一些应对方法,比如,启用了裸磁盘,或者用各种文件系统选项来调优,跳过一些比较过时的限制。

王耀强调,对于性能优化,最重要的一点是,百度从单机的采集的库,到整个收集的展示分析的平台,都有一套完整的追踪系统,可以追踪每一个请求在每一个节点上的耗时,这样就可非常容易的判断问题的所在,定位在某一个模块上,再进行更细化的性能分析,然后查看是否为某一些硬件的资源达到了瓶颈(网卡打满、磁盘打满等情况),如果排除了硬件问题,就可能是程序上的问题(CPU打满),所以需要再去优化CPU是否可以更高效的处理一些逻辑。

在硬件层面,不同的场景会有不同的瓶颈点。对分布式计算来说,带宽会受到一些影响;对于EC编码来讲,可能CPU会成为一些瓶颈。百度会有针对性的进行优化和计算。可能会有优化placement的策略,让数据和计算尽可能的在一起,就不会有网络传输的开销,也有可能采用一些硬件加速的措施来进行优化。

分布式文件系统的开源技术

王耀重点分享了百度在文件系统和开源自研的发展之路。最开始,百度使用了一些开源的分布式文件系统(MooseFS、GlusterFS),但是这些系统都有一些问题不能够满足需求。所以,百度自研发了一些分布式文件系统,比如CCDB-NFS,它解决了MFS性能上的一些问题。

“NFS在百度使用得非常广泛,部署了1万多台节点,有几百个业务在使用我们的存储服务。”王耀说。

除了做基于挂载方式的文件系统,百度还做过面向计算的分布式文件系统。王耀解释,最早引入的HDFS支撑了百度过去几年的发展,但还是赶不上需求,所以百度自研了AFS分布式文件系统,同HDFS相比,AFS功能比社区更丰富一些,做的时间更早,而且支持EC,支持百亿左右的集群规模,对多种存储的介质有更灵活的选择。

未来的规划

王耀还分享了研发存储系统的曲折路,分布式存储系统与其他分布式系统有很大不同,存储系统分支复杂,异常问题多,数据难搬迁,所以,在设计阶段就要把每个细节都想清楚,能够推演系统的各个流程。未来,百度的重心是打磨现有的块存储和对象存储,降低成本,降低长尾请求比例,为用户提供更好的体验。

最后,王耀表示,存储研发人员需要持续学习,时刻关注学术界和企业界的发展,多与同行交流来获取业界的发展动态。同时,选择并评估将这些业界先进技术引入到自己的系统当中,提高系统的运作效率,提供更好的服务能力。

你可能感兴趣的:(百度开放云王耀:设计分布式存储系统不宜过早优化)