专栏名称: InfoQ
有内容的技术社区媒体。
51好读  ›  专栏  ›  InfoQ

百度云磁盘CDS、对象存储BOS技术深度解析

InfoQ  · 公众号  · 科技媒体  · 2017-06-27 08:00

正文

在 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 的整个软件框架,分为 Client 客户端、Frontend 前端、Control 控制中心、Proxy 代理层、Storage 存储层、HardWare 硬件设备几个部分。

百度提供了一个统一的 Proxy,主要用于解决跟存储引擎交互的功能。整个设计从上往下,从左往右,比较好表达 BOS 软件设计的分层。

BOS 的速度优化与安全

在数据的加速上传方面,百度通过上传网络优化和上传工具优化两个方面实现。

  • 上传网络优化。百度的上传网络优化主要的三个点。1、BGP 边界网关协议;2、CDN 内容分发网络。百度在各个地方设置了 CDN,在网络情况较差的地方,可以选择走专属的 CDN 网络;3、专线。对数据的安全要求比较高、不希望走公网的用户,可以采用专线的形式。

  • 上传工具优化。百度提供的上传工具包括 Multi Upload,CLI、批量上传、Sync 以及客户端压缩,服务器端自动解压缩等,帮助数据实现快速上传。

牛献会表示,对于云数据而言,最重要的是数据的安全保障,百度提供了认证鉴权,临时授权,子账号管理等整套完整的安全机制,对于移动分发类的场景,提供了 STS,这样可以有效减少主 AK、SK 分发带来的密钥泄漏。

用户期望数据安全的同时,也期望加密服务不要影响到 GET、PUT 等数据功能的使用性能,针对此种情况, 百度支持的是透明加密的,与此同时,其智能网卡带的加解密功能,可以降低对 CPU 等的开销和成本。

硬件选型和优化

除了软件上的优化,百度在硬件的选型和优化上也有很多:整机柜、高密度以及蓝光存储,对机器也要求双电双网,最大程度减少掉电和交换机故障带来的影响。

写在最后

云存储产品的设计,很多的时候需要考虑到整个业界发展的现状和用户整体需求,云存储的开发并不是一蹴而就的,它需要一个过程,百度云提供了多种存储产品和实用工具,是为了让整个过程变得更平滑。