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

2017 年 6 月 28 日

在 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 等的开销和成本。

硬件选型和优化

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

写在最后

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

2017 年 6 月 28 日 19:004385
用户头像

发布了 24 篇内容, 共 75208 次阅读, 收获喜欢 0 次。

关注

评论

发布
暂无评论
发现更多内容

区块链跨境支付系统开发,OTC承兑商支付平台搭建

WX13823153201

区块链跨境支付系统开发

Java程序员想要进阶,想了解Java服务器的深层高阶知识,Netty绝对是一个必须要过的门槛。

Java架构之路

Java 程序员 架构 编程语言 随笔杂谈

杂谈:一文了解工业4.0

soolaugust

工业互联网 工业4.0

甲方日常 34

句子

工作 随笔杂谈 日常

1分钟带你入门React Context

Leo

前端 React useContext Context 前端进阶训练营

独家!阿里技术人限产的MySQL高级笔记及面试宝典,简直开挂

996小迁

Java MySQL 架构 面试 技术宅

MySQL-技术专题-MySQL的主从同步

李浩宇/Alex

iOS 性能优化实践:头条抖音如何实现 OOM 崩溃率下降50%+

iOSer

性能优化 OOM ios开发 头条抖音 OOM崩溃

身为程序员你们经历过大厂面试吗?本文为大家解决大厂必问的MySQL调优问题

Java架构师迁哥

区块链交易所开发源码案例,区块链数字货币交易所

135深圳3055源中瑞8032

为什么迫切需要一套直接可落地的中台开发框架

高鹏

中台 业务中台 DDD 中台架构 业务架构

vivo 基于原生 RabbitMQ 的高可用架构实践

vivo互联网技术

高可用 RabbitMQ 中间件

spring-boot-route(二十一)quartz实现动态定时任务

Java旅途

Java Spring Boot quartz

【运维思考】运维对象快速扩展,监控如何精准实时的覆盖?

嘉为蓝鲸

PaaS 运维自动化 监控管理平台 监控系统 监控告警

视频面试跟传统面试的区别及优点

anyRTC开发者

ios 音视频 WebRTC RTC 安卓

【高并发】学好并发编程,关键是要理解这三个核心问题

冰河

并发编程 高并发 同步 分工 互斥

十九、深入Python匿名函数

刘润森

Python

1分钟带你入门Redux、React-Redux

Leo

前端 React 前端进阶训练营 Redux React-Redux

WebSocket硬核入门:200行代码,教你徒手撸一个WebSocket服务器

JackJiang

html5 网络编程 websocket 即时通讯

原来AI也可以如此简单!教你从0到1开发开源知识问答机器人

华为云开发者社区

开源 AI 机器人

LeetCode题解:98. 验证二叉搜索树,递归中序遍历完成后再判断,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

LeetCode题解:98. 验证二叉搜索树,使用栈中序遍历,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

被延伸的“五感”:OPPO联合丹拿发起TWS耳机音质革命

脑极体

最火的HTAP数据库 京东智联云新一代分布式数据库TiDB架构揭秘

京东智联云开发者

数据库 #TiDB

让核显大展拳脚:Intel Iris Xe显卡

intel001

技术实操丨HBase 2.X版本的元数据修复及一种数据迁移方式

华为云开发者社区

数据 数据迁移 原数据

BIGDATA+AI Meetup 2020第二季·上海站开启报名!

Apache Flink

大数据 AI

USDT承兑商平台源码开发,USDT支付系统

135深圳3055源中瑞8032

MapReduce简介及过程详解

犟马骝

hadoop mapreduce

Storage API简介和存储限制与逐出策略

程序那些事

浏览器 web tech web storage storage api 前端存储

【活动预告】2020中国系统架构师大会:即构受邀分享实时音视频服务架构实践

ZEGO即构

架构师 高并发系统设计 技术分享

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