作者
在BAT中,百度在公有云也有很多技术创新。比如2013年引起广泛关注的ARM存储服务器就是一个很好的例子。最近两年,百度云开始发力,其云存储体系有诸多创新之处。目前百度云存储形成了以块存储、对象存储、文件存储为核心,VPN/专线、数据导入、存储网关为支撑的产品体系。其中百度对象存储BOS支撑了百度网盘上千PB的海量数据,在国内首推分级存储和智能存储概念,前者以标准、低频、冷存储三种存储类型组成,后者包括了图片处理、图片审核、Android批量打包等诸多处理能力。
在6月24日百度开发者中心主办、极客邦科技承办的72期百度技术沙龙活动中,百度云计算事业部高级产品经理姜骥川、百度云计算事业部资深工程师杨勇强、百度云计算事业部资深工程师牛献会,分享了当前云存储技术面临的挑战,针对这些挑战,百度云存储技术推出的块存储、对象存储等解决方案,以及方案背后的系统架构演进和关键技术实践。
百度云存储产品与解决方案
百度云计算事业部高级产品经理姜骥川做了开场演讲,他讲解了在人工智能(AI)、大数据(Big Data)、云计算(Cloud)三位一体的新时代下,云存储面临了两大重要挑战:
- 数据爆发式增长。ABC时代最重要的一个特点就是不同应用场景的数据存储需求的爆发式增长,包括语音数据、LBS数据、行业数据等。据分析,到2020年数据量将达到40ZB。
- 数据分析与识别。数据是有价值的,如何通过分析和识别数据发现业务规律,从而产生商业价值,这是现今所有开发者和企业需要去实现重要命题,而这个命题实现的前提就是数据的高效、可靠性存储。
姜骥川表示,云存储的使命一方面是助力传统业务应对变化,满足客户对更高性能、更短响应时间的要求,降低成本赢得竞争力;另一方面,还需要适应新业务的需要,例如海量非结构化数据存储、大数据分析、富媒体处理。在此情景下,百度云提供了块存储、文件存储和对象存储等多种存储类型以适应不同的应用场景需求。
百度云存储 – 云磁盘CDS
百度云块存储主要用于满足云主机的持久化存储需求,它有三大特点,一、计算和存储解耦,比如用户的云主机失效,云磁盘可以很简单的挂载到到另外一个主机上,防止数据丢失及业务中断。二、弹性、支持随时扩容,用户可对云磁盘进行随时扩容,最大可达5T。三、提供快照,便于数据备份、恢复,对于存储产品来说,数据的安全、不丢失,是客户最在意的一点,云磁盘提供的快照功能是对存储数据很好的保护。
百度云存储 – 对象存储BOS
百度云的对象存储是面向Internet的存储服务,为了便于互联网上的访问,对象存储提供了一种扁平的目录结构,通过Bucket来组织和管理Object资源。百度云BOS是国内最大的对象存储服务,支撑了百度网盘上千PB的存储。BOS主要用于服务四类应用场景:UGC内容存储和分享,数据分析,备份归档和网站/应用内容分发等多种应用场景。通过EC编码多副本技术,数据可靠性达到99.999999999%。
百度云块存储架构解析
随后,百度云计算事业部资深工程师杨勇强从技术的角度,对百度云的块存储架构做了详细的解析。
如何实现这个架构?
杨勇强首先从系统设计的角度,讲述块存储的三类API:第一类、控制,即云磁盘的创建删除操作;第二个、特殊产品堆砌,包括快照、克隆、回滚功能;第三类是最核心的,就是磁盘要读写。接着,杨勇强从虚拟设备方案、系统架构、数据分布、读写流程、单机存储引擎、混合存储多个方面,介绍了整个系统的实践方式。
*虚拟设备方案。百度从性能、可运维性两个角度出发做了自己的虚拟设备方案。具体实现过程为在qemu实现cds的虚拟设备方案,这个虚拟设备的请求会通过管道或者共享内存交给另外一个进程,另外一个进程cds-agent运行后端分布式存储的lib。
在这个方案里需要经常升级的是分布式存储的lib,主要是源于三个需求,1. 产品特性的增加,比如限速等;2. 分布式存储的访问优化,有些优化是需要lib配合的,3. 这个lib逻辑相对复杂,小的fix上线较多。cds-agent是单独的进程,这样就可以做无感的升级。
*系统架构。系统架构分为两个部分,卷管理以及block系统。这个架构是一个复制结构,这个复制结构在业界就是比较折中的一个方式,在延迟上面达到比较优的一个折中。
这里主要介绍了虚拟设备方案与系统架构两个方面,具体的实现方式和架构图可以下载PPT详细了解。杨老师表示,在整个系统的设计当中,系统高可用、高可靠、latency敏感、随机读写是最重要的技术关键点,也是整个系统设计的基本依据。
百度超大规模对象存储BOS
百度云计算事业部资深工程师牛献会从BOS的软件结构、API、产品特性、存储引擎、硬件选型和优化等角度对百度对象存储做了全面的分析和解读。牛献会介绍到,Bucket与Object,是BOS上最基本的概念,BOS支持图片,视频等各种二进制数据,单文件最大5TB的容量具有存储,高可用,高可靠,高扩展性。
BOS的软件架构
BOS的整个软件框架,分为如下图几个部分:
百度提供了一个统一的Proxy,主要用于解决跟存储引擎交互的功能。整个设计从上往下,从左往右,比较好表达BOS软件设计的分层。
BOS的速度优化与安全
在数据的加速上传方面,百度通过上传网络优化和上传工具优化两个方面实现。
- 上传网络优化。百度的上传网络优化主要的三个点。1、BGP边界网关协议;2、CDN内容分发网络。百度在各个地方设置了CDN,在网络情况较差的地方,可以选择走专属的CDN网络;3、专线。对数据的安全要求比较高、不希望走公网的用户,可以采用专线的形式。
- 上传工具优化。百度提供的上传工具包括Multi Upload,CLI、批量上传、Sync以及客户端压缩,服务器端自动解压缩等,帮助数据实现快速上传。
牛献会表示,对于云数据而言,最重要的是数据的安全保障,百度提供了认证鉴权,临时授权,子账号管理等整套完整的安全机制,对于移动分发类的场景,提供了STS,这样可以有效减少主AK、SK分发带来的密钥泄漏。
用户期望数据安全的同时,也期望加密服务不要影响到GET、PUT等数据功能的使用性能,针对此种情况, 百度支持的是透明加密的,与此同时,其智能网卡带的加解密功能,可以降低对CPU等的开销和成本。
硬件选型和优化
除了软件上的优化,百度在硬件的选型和优化上也有很多:整机柜、高密度以及蓝光存储,对机器也要求双电双网,最大程度减少掉电和交换机故障带来的影响。
写在最后
云存储产品的设计,很多的时候需要考虑到整个业界发展的现状和用户整体需求,云存储的开发并不是一蹴而就的,它需要一个过程,百度云提供了多种存储产品和实用工具,是为了让整个过程变得更平滑。
转自 http://www.infoq.com/cn/news/2017/06/CDS-baidu-Store