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. IntelliJ IDEA 15 部署Tomcat及创建一个简单的Web工程

    一.部署Tomcat 二.创建一个简单的Web工程 2.1创建一个新工程 创建一个新工程 设置JDK及选择Web Application (创建的是Web工程) 点击Next,选择工作空间,起个工程名 ...

  2. SSAO

    http://blog.csdn.net/xoyojank/article/details/5734537 http://john-chapman-graphics.blogspot.com/2013 ...

  3. memcached-repcached

    memcached的复制功能 下载对应的repcached版本:http://sourceforge.jp/projects/sfnet_repcached/,必须版本对应才行 当前只支持到1.2.8 ...

  4. hdu 4888

    网络流建模,建模不难,难在找环: #include<cstdio> #include<algorithm> #include<vector> #include< ...

  5. nginx去掉单个目录和多个目录PHP执行权限方法

    我们经常希望某些目录不能执行php代码,如果是nginx的话,我们怎么设置Nginx对于某些目录禁止执行PHP权限呢.以前不知道,其实nginx去掉单个目录和多个目录PHP执行权限方法也很简单. 首先 ...

  6. Public, Private and Protect

    public 意味着在其后声明的所有成员对所有的人都可以取. private 意味着除了该类型的创建者和类的内部成员函数之外,任何人都不能存取这些成员. protect 它与private基本相似,只 ...

  7. 2013山东省ICPC结题报告

    A.Rescue The Princess 已知一个等边三角形的两个顶点A.B,求第三个顶点C,A.B.C成逆时针方向. 常规的解题思路就是用已知的两个点列出x,y方程,但这样求出方程的解的表达式比较 ...

  8. HDU 2473 Junk-Mail Filter(并查集+删点,设立虚父节点/找个代理)

    题意:有N封邮件, 然后又两种操作,如果是M X Y , 表示X和Y是相同的邮件.如果是S X,那么表示对X的判断是错误的,X是不属于X当前所在的那个集合,要把X分离出来,让X变成单独的一个.最后问集 ...

  9. **【ci框架】精通CodeIgniter框架

    http://blog.csdn.net/yanhui_wei/article/details/25803945 一.大纲 1.codeigniter框架的授课内容安排 2.codeigniter框架 ...

  10. Linux防火墙(Iptables)的开启与关闭

    Linux防火墙(iptables)的开启与关闭 Linux中的防火墙主要是对iptables的设置和管理. 1. Linux防火墙(Iptables)重启系统生效 开启: chkconfig ipt ...