Facebook公司已经在其近线存储体系当中彻底弃用RAID与复制机制,转而采用分布式擦除编码以隔离其所谓的“暖性BLOB”。

  暖性?BLOB?这都是些什么东西?大家别急,马上为您讲解:

  BLOB——也就是二进制大对象,包括Facebook用户的图片以及视频等等。

  暖性——是指那些必须进行保存,访问频率低于热门数据但却又高于归档或者冷门数据的信息。通常情况下,这些数据已经产生了一周以上。当然,热门BLOB的访问频率仍然较高。

  擦除编码——向一条字节串中添加经过计算的奇偶校验值(即里德所罗门码,简称RS),这样由于错误删除或者损坏了完整内容之后、该字符串仍能被恢复为原样。一般来讲,这种机制能够比RAID更为有效地对数据加以保护、并且无需占用太多存储空间。

  Facebook公司面临的一大特殊问题在于,其拥有三种主要用户数据类型外加与之相关的元数据,而且这三种类型都要求拥有庞大的存储空间作为支撑。Facebook最为主要且访问频率最高的数据集是那些生成时间不长,且在用户时间表中留存时间不足一周的发布信息。这些内容往往会受到该用户“好友”们的大量访问。

  Facebook利用其Haystack存储系统处理这些数据,这套方案采用三级复制机制对数据中以保护、确保这部分数据能够始终接受访问且具备快速的响应能力,同时尽可能将访问指向单一磁盘(当元数据计算开始运行之后)。

  当这部分数据逐渐陈旧之后,其访问频率通常也会有所降低——也就是前面提到的由热门转向“暖性”,但我们仍然需要为其提供较快的访问速度、从而切实满足调用需求。这就产生了新的问题,数据总量一直处于规模膨胀态势当中。举例来说,截至今年一月份,Facebook所保存的照片总数已经超过4000亿张。

Facebook存储技术方案:我们使尽浑身解数找出“暖性BLOB”数据

  根据时间推移,请求的相对频率也如图示发生衰减。每一条只对应单独一类存储对象,图中取其绝对值以增加易读性。另外圆点部分代表着访问请求频率降低至下一数量级的转折位置。

  在对每TB数据IO次数进行计算之后,我们可以看到这种暖性型数据的IO密度要远低于热门数据,这意味着此类数据已经不再需要利用三级复制机制加以保存,但却仍然需要具备可以接受的访问速度,同时拥有必要的保护手段以避免遭受磁盘、主机以及机架故障的影响。

  Facebook公司的工程师们已经打造出一款新型存储系统,也就是f4,专门用于保存这些暖性BLOB。工程师们在一篇论文中解释道:“f4是一款新型系统,能够在降低暖性BLOB有效复制因素的同时保持其容错性以及对较低数据吞需求的支持能力。”

Facebook存储技术方案:我们使尽浑身解数找出“暖性BLOB”数据

  Facebook的工程师们指出:

  f4采用里德所罗门编码机制并将数据块排布在多台不同机架之上,从而确保单一数据中心内部的磁盘、主机以及机架故障不会对数据可用性造成影响。它还在广域层面利用XOR编码机制以确保数据中心的故障弹性。f4已经在Facebook的生产环境之下运行了超过19个月。f4目前保存的逻辑数据超过65PB,帮助公司节约的存储空间则超过53PB。

  BLOB与聚合文件系统元数据共同被汇聚在以100GB为单位的逻辑分卷当中。这类逻辑分卷由数据文件、索引文件以及日志文件共同构成。其中索引文件其实是一套针对内存内存储主机查找结构的快照。当所有分卷都被锁定时,则不允许再创建新的分卷。

  这些分卷构成多个cell单元并被保存在数据中心内部,其中每个单元由包含15台主机的14套机架构成、每台主机配备30块4TB磁盘驱动器。每个分卷/字符串/数据块都拥有一个位于其它不同地理位置的对应分卷/字符串/数据块。Facebook公司还会在独立的第三个区域另行保存一套XOR数据内容。这套体系能够保证任意区域出现故障时,用户仍能顺利访问所需数据信息。

  那么一般性企业用户是否需要建立这样一套存储体系来打理自己的近线数据呢?基本上用不着,毕竟大部分企业用户根本不需要像Facebook那样面对如此庞大的数据总量,也不可能遇到同等规模的数据增长速度或者信息不变性。

原文出自【比特网】,转载请保留原文链接:http://storage.chinabyte.com/215/13106215.shtml

Facebook存储技术方案:找出“暖性BLOB”数据的更多相关文章

  1. R语言中如何找出在两个数据框中完全相同的行(How to find common rows between two dataframe in R?)

    I would like to make a new data frame which only includes common rows of two separate data.frame. ex ...

  2. 腾讯面试题:10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。

    腾讯面试题:10G 个整数,乱序排列,要求找出中位数.内存限制为 2G. 题目和基本思路都来源网上,本人加以整理. 题目:在一个文件中有 10G 个整数,乱序排列,要求找出中位数.内存限制为 2G.只 ...

  3. MSSQLSERVER- CharIndex的妙用,找出有妙用

    CharIndex 1:CharIndex语法: CharIndex(expression1,expression2[,start_location]) 2:参数 expression1 一个表达式, ...

  4. 找出二进制数中bit为1的最(高/低)索引

    题1.  给定一个无符号整型数据(unsigned int),找出其对应二进制数据中bit位为1的最高/低索引. 比如:对于数据0,返回0:数据1,返回1:数据0x80000000,返回32: 题2. ...

  5. H5本地存储技术

    H5 Web存储技术 前言 web存储技术在初期的时候被定义为HTML5的一部分作为其API.后来被独立出来作为一份独立的标准. web存储标准包含localStorage对象和sessionStor ...

  6. 小易邀请你玩一个数字游戏,小易给你一系列的整数。你们俩使用这些整数玩游戏。每次小易会任意说一个数字出来,然后你需要从这一系列数字中选取一部分出来让它们的和等于小易所说的数字。 例如: 如果{2,1,2,7}是你有的一系列数,小易说的数字是11.你可以得到方案2+2+7 = 11.如果顽皮的小易想坑你,他说的数字是6,那么你没有办法拼凑出和为6 现在小易给你n个数,让你找出无法从n个数中选取部分求和

    小易邀请你玩一个数字游戏,小易给你一系列的整数.你们俩使用这些整数玩游戏.每次小易会任意说一个数字出来,然后你需要从这一系列数字中选取一部分出来让它们的和等于小易所说的数字. 例如: 如果{2,1,2 ...

  7. 分布式锁1 Java常用技术方案

    前言:       由于在平时的工作中,线上服务器是分布式多台部署的,经常会面临解决分布式场景下数据一致性的问题,那么就要利用分布式锁来解决这些问题.所以自己结合实际工作中的一些经验和网上看到的一些资 ...

  8. 分布式锁1 Java常用技术方案(转)

    转:http://www.cnblogs.com/PurpleDream/p/5559352.html#3450419 前言:       由于在平时的工作中,线上服务器是分布式多台部署的,经常会面临 ...

  9. 关于分布式锁Java常用技术方案

    前言:       由于在平时的工作中,线上服务器是分布式多台部署的,经常会面临解决分布式场景下数据一致性的问题,那么就要利用分布式锁来解决这些问题.      所以自己结合实际工作中的一些经验和网上 ...

随机推荐

  1. Ubuntu下安装配置zsh和oh my zsh

    zsh优势:自动补全功能强大和很高的可配置性 1.查看当前系统装了哪些shell    cat /etc/shells 2.当前正在运行的是哪个版本的shell    echo $SHELL 3.安装 ...

  2. 在线最优化求解(Online Optimization)之一:预备篇

    在线最优化求解(Online Optimization)之一:预备篇 动机与目的 在实际工作中,无论是工程师.项目经理.产品同学都会经常讨论一类话题:“从线上对比的效果来看,某某特征或因素对xx产品的 ...

  3. Caffe训练好的网络对图像分类

    对于训练好的Caffe 网络 输入:彩色or灰度图片 做minist 下手写识别分类,不能直接使用,需去除均值图像,同时将输入图像像素归一化到0-1直接即可. #include <caffe/c ...

  4. Sql注入中连接字符串常用函数

    在select数据时,我们往往需要将数据进行连接后进行回显.很多的时候想将多个数据或者多行数据进行输出的时候,需要使用字符串连接函数.在sqli中,常见的字符串连接函数有concat(),group_ ...

  5. nginx模块开发(18)—日志分析

    1.日志简介 nginx日志主要有两种:访问日志和错误日志.访问日志主要记录客户端访问nginx的每一个请求,格式可以自定义:错误日志主要记录客户端访问nginx出错时的日志,格式不支持自定义.两种日 ...

  6. POJ 3641

    Pseudoprime numbers Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6044   Accepted: 24 ...

  7. sql中临时表的创建和使用【本文转自多人博客】

    本模块原网址:http://www.cnblogs.com/jeffwongishandsome/archive/2009/08/05/1526466.html 原作者:Jeff Wong 1.创建方 ...

  8. linux入门教程(一) 关于linux的历史

    很多关于linux的书籍在前面章节中写了一大堆东西来介绍linux,可惜读者看了好久也没有正式开始进入linux的世界,这样反而导致了他们对linux失去了一些兴趣,而把厚厚的一本书丢掉. Linux ...

  9. Java的登陆验证问题

    java中的登陆验证问题可以有多种方式进行验证,通过拦截器功能完成,可以通过过滤器功能完成,也可以简单的代码在JSP页面中单独完成,其中都 涉及到一个关键的验证步骤,这个验证原理ASP,PHP,JAV ...

  10. 如何配置JAVA的环境变量、Tomcat环境变量

    配置JAVA环境变量 1.右击[我的电脑]---[属性]-----[高级]---[环境变量],如图: 2.选择[新建系统变量]--弹出“新建系统变量”对话框,在“变量名”文本框输入“JAVA_HOME ...