扒一扒Facebook支撑万亿Post搜索背后的故事

前段时间,Facebook为post搜索添加了Graph Search。之后,Facebook每天约产生10亿条post,post索引总数已上万亿条,数据量超700TB。这些惊人的数字为这些post建立索引和构建实时查询系统无疑挑战是非常严峻的。那么Facebook又是如何应对这一挑战的?以下主要阐述:

数据收集

Facebook的底层数据结构主要是为了满足快速迭代网络服务的需要,同时这却也成为构建实时查询系统所面临的最大挑战。增加新功能往往需要改动这些数据结构,而Facebook一贯的作风是变动,尽量不造成工程师的困扰。然而,由于wall post、photo、check-in等功能采用不同的数据存储机制,对底层数据结构进行改动增加了以时间、地点和标签进行排序的难度。当前,排序和索引的数据约有70种,其中很多种都是基于特定post类型的。此外,数据存储在一个用于生产环境的MySQL数据库中。这也就意味着,当数据库同时支撑生产传输及数据收集时,负载将大幅度增加,因此这些过程必须被严格监控。

索引建立

数据收集来后,我们将其存储在HBase集群中,然后执行Hadoop map-reduce任务,高并行地为之建立索引。为原始数据建立索引后,然后便传输给搜索的基础Unicorn。我们将数据分为两块——文档数据和反向索引(inverted index)。每条post的文档数据包含用于排序的相关信息。传统意义上搜索索引有什么,反向索引就有什么。要建反向索引需要遍历每一条post,并确定与假设中的哪种搜索过滤器相匹配。

索引更新

为了更新索引,我们使用Wormhole技术订阅MySQL数据库中的变更。一旦有新post,现有post被修改、删除或与post有关的相关数据被编辑等情况发生时,我们就会都对相关post进行更新操作。为了减少重复代码,我们使用与在“数据收集”部分提到的相同逻辑来进行更新操作。不同之处在于,我们在收集数据时有意避开缓存,因为我们想尽量避免请求没有缓存过的数据。当我们更新索引时,我们将会命中缓存,因为我们希望该数据是最近被访问过,并且还在缓存中。

索引存储

post索引要比Facebook维护的其他搜索索引大得多。在开始搜索post之前,Facebook所有的搜索索引都存储在RAM中。对于快速查询来说,这再好不过了。对小型的搜索索引来说也是可行的。然而,将700多TB的数据存储在RAM中所带来系统开销是难以想象的,因为它需要维护分布在多台机器上的索引。协调存储索引的多台机器使它们有序地工作给系统带来了巨大的性能损耗,Unicorn团队为此不得不寻找存储post索引的新方法。我们最终敲定的解决方案是用固态闪存存储大部分的索引,用RAM存储存取最为频繁的数据结构,性能得以维持。

结果排序

由于索引了1万亿条post,绝大多数查询返回的结果数量之多是任何人都读不完的。为此,Facebook开始设计对结果进行排序。为了使对用户有价值并与用户相关的内容浮到上面,主要采用了两种主要策略:查询重写和结果动态打分。在执行前,先重写查询,灵活增加子句,以确保查询结果对用户价值更大。为搜索结果进行打分,包括基于一系列用于排序的特征进行排序和选择文档。排序特征是从文档中抽取出来的,目前一共抽取了100多项特征,结合排序模型,用于寻找最佳搜索结果。随着用户量的增长和用户反馈的增多,排序模型必将得到进一步改善。

项目简史

像 Facebook 的很多其他产品一样,post搜索功能也是诞生于一个编程马拉松项目。而在过去的一年中,Graph Search 团队的几十个人实现了post搜索的大部分功能——基础架构、排序和产品化。

【编辑推荐】

Facebook与Yahoo“火花”:系统间实时数据流管理工具挑战传统关系型数据库:Facebook图形数据库TAO揭秘后起之秀Facebook凭什么挑战互联网霸主Google?Facebook公开服务器设计 数据服务行业面临洗牌【责任编辑:箫韵 TEL:(010)68476606】

时间: 2024-08-10 08:46:02

扒一扒Facebook支撑万亿Post搜索背后的故事的相关文章

微信群九大规律 - 47万微信群和2亿微信用户背后的故事

康奈尔大学数字图书馆收录了一篇名为The Lifecycle and Cascade of WeChat Social Messaging Groups的论文,分析了47万+微信群.2亿+微信用户.6亿+好友关系和200万+邀请记录之后,写出474,726个群样本的生命周期分布数据报告. 微信群九大规律 1. 每一天,约有 230 万的微信群新创建. 2.大约 25% 的微信信息,来自于群对话. 3.微信群的生命周期,很大程度取决于设立时候的社交目的:例如事件驱动的群组相对于经常聚会的朋友群,有

云计算和大数据撑起3 万亿阿里

"正因我不懂技术,所以阿里的技术才是最好的.他们的领导知道这个搞不下去,而我是不知道这个搞不下去,只是说了句这个东西一定得搞下去,所以做出了'双十一'这种需要云计算支持的服务." --马云 3月21日下午2时58分37秒,阿里巴巴中国零售平台交易额(GMV)突破三万亿元,有望在2016财年内超越传统零售企业沃尔玛.三万亿的背后,离不开技术力量的支持.据了解,阿里巴巴正在造一台"全球通用的超级计算机",这台计算机已经服务了60多个国家的180万家企业. 不懂技术 马云

190亿之外,扒一扒中国的移动社交应用市场

2014年2月19日,美国社交网站Facebook宣布,将以约190亿美元收购移动通讯公司WhatsApp,这一消息强势霸占各大科技头条,业界也传出"为什么WhatsApp能值190亿"."facebook值不值得"."WhatsApp的励志传奇故事"."哪些移动应用可能被收购"等声音,最奇葩的段子是WhatsApp联合创始人Brian Acton其实已在IT领域工作了15年. 根据CNNIC发布的第33次<中国互联网发

Facebook页面访问量破1万亿被指存水分

导语:国外媒体今日发表文章称,Facebook月PV达到1万亿次被夸大其词.comScore数据显示,今年7月Facebook的PV只有4670亿次. 以下为文章内容摘要: 谷歌旗下数据监测机构DoubleClick AdPlanner日前公布的数据显示,Facebook 6月份的用户页面访问量(以下简称"PV")突破1万亿次,这是首家月PV过万亿的网站. 但另一家PV评估机构,也是被业内广泛引用的数据服务商comScore的数据显示,今年7月,Facebook的PV只有4670亿,还

上半年新增贷款或近7万亿银行业绩获支撑

虽然二季度贷款新增速度与首季相比有所放慢,但是随着6月份贷款可能再次攀上万亿大关,上半年的新增贷款或许已逼近7万亿大关,预计这将给银行业绩带来强有力的支撑. 6月新增信贷或超万亿 昨日有消息称,6月份工农中建四大行新增人民币贷款合计4970亿元.按此推算,6月新增贷款很有可能接近1万亿. 一位国有银行人士在接受上海证券报采访时表示,由于6月份中小银行放贷速度仍然较快,当月新增贷款应该会超过万亿规模. 一家大型城商行的副行长昨日也向记者表示,6月份该行的新增贷款多于5月份. 事实上,中小银行放贷凶

【双11背后的技术】万亿交易量级下的秒级监控

选自<不一样的技术创新--阿里巴巴2016双11背后的技术>,全书目录:https://yq.aliyun.com/articles/68637 本文作者:郁松.章邯.程超.癫行 前言 2016财年,阿里巴巴电商交易额(GMV)突破3万亿元人民币,成为全球最大网上经济体,这背后是基础架构事业群构筑的坚强基石. 在2016年双11全球购物狂欢节中,天猫全天交易额1207亿元,前30分钟每秒交易峰值17.5万笔,每秒支付峰值12万笔.承载这些秒级数据背后的监控产品是如何实现的呢?接下来本文将从阿里

埃博拉来袭,扒一扒那些疫情时期坑爹的医药类股

埃博拉席卷西非,全球疫情告急,国内医药板块却集体疯涨,回顾过去,变的是市场上流通的疫情概念产品,不变的是资金浑水摸鱼借机拉升股价的戏码,今天我们来扒一扒此剿a href="http://news.pedaily.cn/industry/医药/" target="_blank">医药类股以抗疫之名乘机拉升股价的坑爹往事〿/p> 微妙释放信息 股价飙升高管套现 在疫情肆虐时,上市公司一则小小公告,可能因此市场强烈的反应: 仿a href="http

恭迎万亿级营销(圈人)潇洒的迈入毫秒时代 - 万亿user_tags级实时推荐系统数据库设计

标签 PostgreSQL , 标签 , 推荐系统 , 实时圈人 , 数组 , gin , gist , 索引 , rum , tsvector , tsquery , 万亿 , user , tag , 淘宝 背景 我们仅用了PostgreSQL的两个小特性,却解决了业务困扰已久的大问题. 推荐系统是广告营销平台的奶牛,其核心是精准.实时.高效. 这么多广告平台,到底谁家强?谁的核心牛逼? 1. 精准,指对用户的描述精准,通常需要基于大量的用户行为数据,经历深度学习后形成的用户画像,或称之为标

智慧城市市场将达20万亿 联网报警业如何分杯羹?

随着智慧城市试点(双试点)及落地的推进,提出智慧城市建设的城市数量已超过500个,市场规模超过6万亿,预计未来5年的复合增长率将超过30%,2021年的市场规模有望达到20万亿.那么,面对如此大的市场蛋糕,传统的联网报警(服务)业如何才能有效切入并分一杯羹? 城市建设已经开始从平安城市发展到智慧城市,智慧城市就是运用信息和通信技术手段感测.分析.整合城市运行核心系统的各项关键信息,从而对包括民生.环保.公共安全.城市服务.工商业活动在内的各种需求做出智能响应.其实质是利用先进的信息技术,实现城市