当前位置: 首页 > 编程日记 > 正文

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

在BAT中,百度在公有云也有很多技术创新。比如2013年引起广泛关注的ARM存储服务器就是一个很好的例子。最近两年,百度云开始发力,其云存储体系有诸多创新之处。目前百度云存储形成了以块存储、对象存储、文件存储为核心,VPN/专线、数据导入、存储网关为支撑的产品体系。其中百度对象存储BOS支撑了百度网盘上千PB的海量数据,在国内首推分级存储和智能存储概念,前者以标准、低频、冷存储三种存储类型组成,后者包括了图片处理、图片审核、Android批量打包等诸多处理能力。

\\

在6月24日百度开发者中心主办、极客邦科技承办的72期百度技术沙龙活动中,百度云计算事业部高级产品经理姜骥川、百度云计算事业部资深工程师杨勇强、百度云计算事业部资深工程师牛献会,分享了当前云存储技术面临的挑战,针对这些挑战,百度云存储技术推出的块存储、对象存储等解决方案,以及方案背后的系统架构演进和关键技术实践。

\\

百度云存储产品与解决方案

\\

百度云计算事业部高级产品经理姜骥川做了开场演讲,他讲解了在人工智能(AI)、大数据(Big Data)、云计算(Cloud)三位一体的新时代下,云存储面临了两大重要挑战:

\\
  • 数据爆发式增长。ABC时代最重要的一个特点就是不同应用场景的数据存储需求的爆发式增长,包括语音数据、LBS数据、行业数据等。据分析,到2020年数据量将达到40ZB。\\t
  • 数据分析与识别。数据是有价值的,如何通过分析和识别数据发现业务规律,从而产生商业价值,这是现今所有开发者和企业需要去实现重要命题,而这个命题实现的前提就是数据的高效、可靠性存储。\

姜骥川表示,云存储的使命一方面是助力传统业务应对变化,满足客户对更高性能、更短响应时间的要求,降低成本赢得竞争力;另一方面,还需要适应新业务的需要,例如海量非结构化数据存储、大数据分析、富媒体处理。在此情景下,百度云提供了块存储、文件存储和对象存储等多种存储类型以适应不同的应用场景需求。

\\

百度云存储 – 云磁盘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、专线。对数据的安全要求比较高、不希望走公网的用户,可以采用专线的形式。\\t
  • 上传工具优化。百度提供的上传工具包括Multi Upload,CLI、批量上传、Sync以及客户端压缩,服务器端自动解压缩等,帮助数据实现快速上传。\

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

\\

\"\"

\\

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

\\

硬件选型和优化

\\

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

\\

写在最后

\\

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

相关文章:

Matlab编程与数据类型 -- 出错处理语句try/catch/end

本微信图文详细介绍了Matlab中try/catch/end出错处理语句。

linux设置nexus开机自启动_在linux中使用nexus搭建maven私服

首先介绍下为什么要搭建maven私服,简单点说就是就是把项目工程中的Jar包放在一个服务器上,每次Jar包的修改都能去私服上面Down到本地。可以对整个项目组的人形成一个统一的管理。2、下载完之后就是这个了:我这个是目前最新的版本了&#xff0…

Lintcode42 Maximum Subarray II solution 题解

【题目描述】Given an array of integers, find two non-overlapping subarrays which have the largest sum.The number in each subarray should be contiguous.Return the largest sum.Notice:The subarray should contain at least one number给定一个整数数组,…

const用法详解

面向对象是C的重要特性. 但是c在c的基础上新增加的几点优化也是很耀眼的 就const直接可以取代c中的#define 以下几点很重要,学不好后果也也很严重 const 1. 限定符声明变量只能被读 const int i5; int j0; ... ij; //非法,导致编译错误 ji; //合法 2. 必…

Matlab编程与数据类型 -- continue、break和return语句

本微信图文详细介绍了Matlab中的continue、break和return语句。

mysql 修复_修复崩溃的Mysql

在mysql的配置文件my.cnf里找到 [mysqld]字段下,添加 innodb_force_recovery 1如果innodb_force_recovery 1不生效,则可尝试2——6几个数字然后重启mysql,重启成功。然后使用mysqldump或 pma 导出数据,执行修复操作等。修复完成…

window.open(url?param=+paramvalue) 服务端 乱码问题解决

window.open("url?param"paramvalue)传递参数出现乱码,在客房端显示是正常的,可是到服务端就是乱码。 1. 利用一个js在客户端转码的函数,escape(str);但是传到服务端仍然是乱码,所以必须在服务端进行解码。 2. 服务端执…

Matlab编程与数据类型 -- 数据类型概述

本微信图文详细介绍了Matlab中的数据类型,数值型和逻辑型举例介绍,其它类型在相应图文进行介绍。

初识mysql数据字段属性_初识mysql

# 经典sql语句 创建数据库- CREATE DATABASE database_name; 删除数据库- DROP DATABASE database_name; 创建备份数据库- USE masterEXEC sp_addupdevice disk,testBack ,c:\xxx\xxx.dat 开始备份- BACKUP DATABASE pubs TO testBack;--- 创建表- 创建新表 create table tab_n…

ceph存储引擎bluestore解析

原文链接:http://www.sysnote.org/2016/08/19/ceph-bluestore/ ceph后端支持多种存储引擎,以插件式的方式来进行管理使用,目前支持filestore,kvstore,memstore以及最新的bluestore,目前默认使用的filestor…

Matlab编程与数据类型 -- 字符型数组

本微信图文详细介绍了Matlab中的字符串类型。

最近想做个音乐共享的软件

准备分如下几部分: 1.配置文件xml读写 2.播放器部分:开始准备用mediaplay做,发现有个开源的播放器,可以考虑 3.网络部分:主要是种子搜索和更新 准备召唤有兴趣的达人一起开发转载于:https://www.cnblogs.com/donneymin…

精通mysql_《深入精通Mysql(五)》实战:Mysql实现主从复制

深入精通Mysql系列其他文章推荐:一、前言随着应用业务数据不断的增大,应用的响应速度不断下降,在检测过程中我们不难发现大多数的请求都是查询操作。此时,我们可以将数据库扩展成主从复制模式,将读操作和写操作分离开来…

一个开发团队、软件公司,团队工作氛围很重要,没有好氛围难出好产品、好项目...

接触软件行业很多年有些年头了,展望过去的岁月,总想写点儿东西,总结总结,我也不怕拍砖了,曾经也换过很多公司、跳过很多槽,现在想想,总结出来:“天下的乌鸦是一样黑的”,…

Matlab编程与数据类型 -- 奇数阶魔方矩阵的编程

本微信图文详细介绍了利用Matlab实现奇数阶魔方矩阵的编程。

Apache Hive 快速入门 (CentOS 7.3 + Hadoop-2.8 + Hive-2.1.1)

2019独角兽企业重金招聘Python工程师标准>>> 本文节选自《Netkiller Database 手札》 第 63 章 Apache Hive 目录 63.1. 安装 Apache Hive 63.1.1. MySQL 63.1.2. Hadoop 63.1.3. Hive 63.1.4. 启动 Hive 63.1.5. 访问 Hive 63.2. 管理 Hive 63.2.1. 表管理 63.2.1.…

mysql的profile_Mysql分析-profile详解

一。前言当我们要对某一条sql的性能进行分析时,可以使用它。Profiling是从 mysql5.0.3版本以后才开放的。启动profile之后,所有查询包括错误的语句都会记录在内。关闭会话或者set profiling0 就关闭了。(如果将profiling_history_size参数设置为0&#x…

2003網域升級到2008網域以及遷移DNS

2003網域升級到2008網域以及遷移DNS 如圖這是我們現在的拓撲,cc從現用的LCS2008網域升級到2008網域,並一步步截圖給大家示範說明。隨便抓了臺虛擬機,是以前做LCS試驗用的,現在不用了,正好給大家示範2003升級到2008網域…

FPGA管脚约束

Edit → language templates : 打开即可查看基本语法。 一、xilinx中的约束文件 1、约束的分类 利用FPGA进行系统设计常用的约束主要分为3类。 (1)时序约束:主要用于规范设计的时序行为,表达设计者期望满足的时序条件&…

Matlab数据的可视化 -- 线性图函数plot

本篇微信图文主要介绍Matlab数据可视化方面的内容。

日志文件和mysql同步到kafka_logstash_output_kafka:Mysql同步Kafka深入详解

0、题记实际业务场景中,会遇到基础数据存在Mysql中,实时写入数据量比较大的情景。迁移至kafka是一种比较好的业务选型方案。而mysql写入kafka的选型方案有:方案一:logstash_output_kafka 插件。方案二:kafka_connector…

TPYBoard自制微信远程智能温湿度计

2019独角兽企业重金招聘Python工程师标准>>> 智能时代一夜间什么都能远程了。创业者想着如何做智能产品,如何做远程控制。DIY爱好者也想着如何自制各种奇妙的工具。这里和大家一起学习制作一款廉价的智能温湿度计。说它廉价是因为共计花费不过40元&#…

Matlab数据的可视化 -- 简易线性函数图

本篇微信图文主要介绍Matlab数据可视化方面的内容。

浏览器tab关闭事件_Python--使用Pyqt5实现简易浏览器(最新版本测试过)

Python--使用Pyqt5实现简易浏览器(最新版本测试过)博客说明文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢!准备环境首先我们需要的是我们的开发环境&…

JS 中 URL 编码的问题.

URL 编码 为什么要对 URL 编码 1. 避免解析错误 我们的 queryString 的形式是使用 ?开始, keyvalue 传递参数, key-value pairs 之间使用 & 连接.比如: ?postid5038412&t1450591802326服务器会 根据 & 解析 key-value pairs 根据 解析 key,value 那么如果 key或…

通用权限管理模块系列——需求分析——列举需求

以RBAC为理论基础 以低耦合为设计原则 我们计划设计一个独立的权限模块 碰到一些难题,后面另外开文章来讨论 本文主要是列举目前收集到的权限方面的需求信息,如果各位有能提供的用例,请不吝赐教。 各种需求都是从网络或零碎项目里提取的&…

Matlab数据的可视化 -- 散点图

本篇微信图文主要介绍Matlab数据可视化方面的内容。scatter

koa连接mysql_CentOS 环境 Node + Koa2 连接 MySQL (ECS系列三)

Koa 搭建服务新建一个文件夹 koa_server,进入后cnpm i -S koa会生成 node_modules 依赖包,以及 package.json创建文件 server.js,并写入const Koa require(koa);const app new Koa();app.use( async ( ctx ) > {ctx.body hello koa2})a…

Python CRC32 文件校验

binascii.crc32(s [,crc])返回CRC32校验。参数crc指定初始值用于循环。例如:Code>>> import binascii>>> crc binascii.crc32(spam)>>> binascii.crc32( and eggs, crc)739139840>>> binascii.crc32(spam and eggs)739139840C…

国家智慧城市战略实施 保温材料等建材万亿市场待挖掘

近年来,国家多部委联合发布《国家新型城镇化规划(2014—2020)》《关于促进智慧城市健康发展的指导意见》,提出到2020年建成一批特色鲜明的智慧城市。国家智慧城市建设与发展上升为国家战略。2014年中国智慧城市的市场规模达到800多亿元,其中不…