热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

浅析Facebook软件架构:Tao和BLOB的实现原理

摘要:用户数达10亿级别,Facebook每天需要存储多达4千亿的照片,面对如此庞大的数据,Facebook采用了Tao和暖
摘要:用户数达10亿级别,Facebook每天需要存储多达4千亿的照片,面对如此庞大的数据,Facebook采用了 Tao和暖性BLOB存储系统。那么,这些存储架构是如何实现的?采用了哪些原理呢?且看本文解析。

【编者按】Tao是一套针对读取进行优化的数据存储机制,并以单一地理分布实例的方式部署在Facebook当中。和Google的Megastore,Spanner地位等同,它底层持久化采用的是MySql,上层的Cache Server使用的是分布式的Memcached。 Tao系统的设计初衷在于为“数PB级别”的庞大数据集提供每秒超过十亿次读取操作。

用户数达10亿级别的Facebook是如何使用这些存储系统的呢?原文作者Murat针对图形数据库TAO和BLOB 存储系统进行解析。

以下为译文:

图形数据库TAO

TAO是Facebook一种用来处理社交图形信息的分布式数据库。每天达千亿级别的图片处理量,必须采用一种高效,稳定,扩展性好的图形数据存储策略才能很好地对此进行处理。

在TAO之前,Facebook的Web服务器是直接访问MySql来进行图片数据读写操作,高度依赖分布式存储系统memcache作为旁视缓存。而TAO数据存储实现了直接的图形抽象处理,从而避免了旁视缓存架构的某些基础弊端。它使用了一种对象和关联模型,采取MySql做连续存储,对数据库的访问进行调整处理,使用自有的图形感知缓存。考虑到跨地域的扩展性需求,在数据复制方面使用了主每记录(per-record master)方法。


F4—暖性*BLOB 存储系统(OSDI’14)

Facebook已经在其近线存储体系当中彻底弃用RAID与复制机制,转而采用分布式擦除编码以隔离其所谓的“暖性BLOB”。目前,Facebook新的架构把多媒体数据划分为两个类别:

  1. 存储在Haystack的热/新添加 的媒体数据;
  2. 存储在F4的暖性数据,暖性相对于沉没/使用率低但非新添加而言。

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

Facebook每天需要存储多达4千亿的照片,所以根据不同数据热度来采取相应的存储策略与方式是很有必要的。Facebook发现不同时期的BLOB与热度之间有一种强联系。新创建的BLOBs被调用的频率远高于旧的BLOBs,简单说就是使用热度高。实践证明,九成以上的当日新增数据比已创建一周的旧数据的访问请求率要高得多。此外,不同的创建时期与删除率之间也有强联系。旧BLOBs的删除率远低于新BLOBs的删除率,这些旧数据就是前述的暖性数据。

他们还发现暖性内容在整个数据库中占据较大的比重。他们尝试把最近九个月的数据划为三段:0-3个月,3-6个月,6-9个月。第一段分区的暖性数据占比超过80%,第三段分区的暖性数据占比超过89%,暖性数据呈增长趋势。根据这些分析,Facebook为BLOB数据存储进行了划分设计,引入F4存储系统,以区别于存放在Haystack的热数据。相对冷数据,一般要花费数个小时甚至数天才能读取而言,暖性数据的提出是为了照顾用户的需求。


F4是一款新型系统,能够在降低暖性BLOB有效复制因素的同时保持其容错性以及对较低数据吞需求的支持能力,专门用于保存这些暖性BLOB。 

F4提供了一种简单,高效,容错的暖性数据存储方案,把有效复制因子(effective-replication-factor)从3.6减到2.8甚至2.1。使用奇偶区或条块检验的纠错码。

F4的数据和索引文件与Haystack相同,日志文件却是新类型。这是一种写前日志,附有tombstones(墓碑)对已删除BLOBs进行追踪。


F4有专门的backoff(后备)节点来帮助BLOB在线重建,这类似于memcache中gutter(水槽)节点的容错能力。在引入F4 19个月后,现在F4的逻辑数据量达到65PB,数据存储量达53PB。



推荐阅读
  • NoSQL数据库,即非关系型数据库,有时也被称作Not Only SQL,是一种区别于传统关系型数据库的管理系统。这类数据库设计用于处理大规模、高并发的数据存储与查询需求,特别适用于需要快速读写大量非结构化或半结构化数据的应用场景。NoSQL数据库通过牺牲部分一致性来换取更高的可扩展性和性能,支持分布式部署,能够有效应对互联网时代的海量数据挑战。 ... [详细]
  • 掌握PHP框架开发与应用的核心知识点:构建高效PHP框架所需的技术与能力综述
    掌握PHP框架开发与应用的核心知识点对于构建高效PHP框架至关重要。本文综述了开发PHP框架所需的关键技术和能力,包括但不限于对PHP语言的深入理解、设计模式的应用、数据库操作、安全性措施以及性能优化等方面。对于初学者而言,熟悉主流框架如Laravel、Symfony等的实际应用场景,有助于更好地理解和掌握自定义框架开发的精髓。 ... [详细]
  • 当前,众多初创企业对全栈工程师的需求日益增长,但市场中却存在大量所谓的“伪全栈工程师”,尤其是那些仅掌握了Node.js技能的前端开发人员。本文旨在深入探讨全栈工程师在现代技术生态中的真实角色与价值,澄清对这一角色的误解,并强调真正的全栈工程师应具备全面的技术栈和综合解决问题的能力。 ... [详细]
  • MySQL性能优化与调参指南【数据库管理】
    本文详细探讨了MySQL数据库的性能优化与参数调整技巧,旨在帮助数据库管理员和开发人员提升系统的运行效率。内容涵盖索引优化、查询优化、配置参数调整等方面,结合实际案例进行深入分析,提供实用的操作建议。此外,还介绍了常见的性能监控工具和方法,助力读者全面掌握MySQL性能优化的核心技能。 ... [详细]
  • 修复一个 Bug 竟耗时两天?真的有那么复杂吗?
    修复一个 Bug 竟然耗费了两天时间?这背后究竟隐藏着怎样的复杂性?本文将深入探讨这个看似简单的 Bug 为何会如此棘手,从代码层面剖析问题根源,并分享解决过程中遇到的技术挑战和心得。 ... [详细]
  • 从无到有,构建个人专属的操作系统解决方案
    操作系统(OS)被誉为程序员的三大浪漫之一,常被比喻为计算机的灵魂、大脑、内核和基石,其重要性不言而喻。本文将详细介绍如何从零开始构建个人专属的操作系统解决方案,涵盖从需求分析到系统设计、开发与测试的全过程,帮助读者深入理解操作系统的本质与实现方法。 ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • openGauss行存储核心架构及其页面组织详解
    行存储的核心架构和页面组织是实现DML操作、可见性判断及多种管理功能的基础。作为基于磁盘的存储引擎,行存储在设计上采用了段页式结构,以优化数据的存储和访问效率。这种设计不仅确保了数据的高效存储,还为行存储的各种高级功能提供了坚实的技术支持。 ... [详细]
  • Python作为当今IT领域中最受欢迎且高效的语言之一,其框架能够显著加速Web应用程序的开发过程。本文推荐并对比了十大顶级Python Web开发框架,其中CubicWeb以其卓越的代码重用性和模块化设计脱颖而出,为开发者提供了强大的支持。 ... [详细]
  • 在Spring与Ibatis集成的环境中,通过Spring AOP配置事务管理至服务层。当在一个服务方法中引入自定义多线程时,发现事务管理功能失效。若不使用多线程,事务管理则能正常工作。本文深入分析了这一现象背后的潜在风险,并探讨了可能的解决方案,以确保事务一致性和线程安全。 ... [详细]
  • 全面解析Java虚拟机:内存模型深度剖析 ... [详细]
  • 在处理分享功能时,以往通常会首先考虑使用第三方SDK,如友盟等。然而,通过实际项目经验发现,利用iOS原生的UIActivityViewController不仅可以实现高效、稳定的分享功能,还能更好地控制用户体验。本文将详细介绍如何利用iOS原生技术缓存HTML内容,并结合URL分享的最佳实践,帮助开发者在实际开发中提升应用性能和用户满意度。 ... [详细]
  • 探讨 jBPM 数据库表结构设计的精要与实践
    探讨 jBPM 数据库表结构设计的精要与实践 ... [详细]
  • 使用Boost.Asio进行异步数据处理的应用程序主要依赖于两个核心概念:I/O服务和I/O对象。I/O服务抽象了操作系统接口,使得异步操作能够高效地执行。I/O对象则代表了具体的网络资源,如套接字和文件描述符,通过这些对象可以实现数据的读写操作。本文详细介绍了这两个概念在Boost.Asio中的应用及其在网络编程中的重要性。 ... [详细]
  • 视觉图像的生成机制与英文术语解析
    近期,Google Brain、牛津大学和清华大学等多家研究机构相继发布了关于多层感知机(MLP)在视觉图像分类中的应用成果。这些研究深入探讨了MLP在视觉任务中的工作机制,并解析了相关技术术语,为理解视觉图像生成提供了新的视角和方法。 ... [详细]
author-avatar
大胡子姐姐爱油面巾塞肉
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有