原文出自:http://tigerlchen.iteye.com/blog/1742851
翻译出自:http://www.quora.com/Facebook-Engineering/What-is-Facebooks-architecture
1、Web 前端是由 PHP 写的。Facebook 的 HipHop会把PHP转成 C++ 并用 g++编译,这样就可以为模板和Web逻贺业务层提供高的性能。
2、业务逻辑以Service的形式存在,其使用Thrift。这些Service根据需求的不同由PHP,C++或Java实现。
3、用Java写的Services没有用到任何一个企业级的应用服务器,但用到了Facebook自己的定制的应用服务器。看上去好像是重新发明轮子,但是这些Services只被暴露给Thrift使用(绝大所数是这样),Tomcat太重量级了,即使是Jetty也可能太过了点,其附加值对Facebook所需要的没有意义。
除了语言层面的,还有很多架构,多数是开源架构,并且有很多是Facebook根据自己的业务需求而设计的架构并使之开源的。
4、持久化使用MySQL,Memcached,Hadoop's Hbase。Memcached是一个流行的缓存,被用做MySQL缓存。
5、离线处理使用Hadoop和Hive。
6、日志,点击,订阅传输这些数据使用Sribe,使用Scibe-HDFS被记录和存储在HDFS中,因此允许使用MapReduce进行扩展分析。
7、BigPipe是他们自己制定的技术,使用管道逻辑来加快页面渲染。
8、Varnish Cache用作Http代理,提升性能和效率。
9、10亿级的海量图片存储和传送,使用Haystack进行处理,这是一个由Facebook开发的专用的储存解决方案,提高了优化水平并且可以追加写。
10、Facebook消息使用自己的架构,值得注意的是这个架构是一个共享的基础架构,并且是动态集群管理的,业务逻辑和持久化被封装在称为‘Cell’的东西中,每一个Cell都是使用者的一部分,新的Cell可以自由的添加。持久花技术使用HBash来完成。
11、Fackbook消息的搜索引擎构建在HBase的一个反向索引存储上。
12、Fackbook搜索引擎的实现细节目前我还不清楚。
13、输入预搜索使用自己定制的存储器和检索逻辑。
分享到:
相关推荐
facebook的信息架构设计,是目前为止互联网上我见过的最合理的信息架构。每次培训,我基本都需要拿20分钟左右的时间来解析它,包括老的、新的、被抄袭的。一直打算把这个解析过程写下来,但讲的时候可以图音并茂,写...
原文:http://uicom.net/blog/?p=762facebook的信息架构设计,是目前为止互联网上我见过的最合理的信息架构。每次培训,我基本都需要拿20分钟左右的时间来解析它,包括老的、新的、被抄袭的。 一直打算把这个解析...
Faiss的构建该库基本上通过 C 实现。它带有可选择的 GPU (该GPU通过CUDA支持)以及一个可选的 Python 接口。编译采用的是Makefile。详细信息可参见INSTALL:...
“本书的作者们在介绍软件架构的基本实践和最佳实践方面干得很漂亮,他们也同样漂亮地介绍了各式各样的现代系统。我特别喜欢他们谈及的架构的广泛性,从Emacs到Facebook,从非常正式的系统到非常有灵气的系统。 ...
全书共四部分13 章:第一部分(第1~2 章)主要介绍了如何获取、阅读和调试Hadoop 的源代码,以及YARN 的设计思想、基本架构和工作流程;第二部分(第3~7 章)结合源代码详细剖析和讲解了YARN 的第三方开源库、底层...
Douglas Gourlay 云计算指的是一个大的宏图,基本上说,就是让用户透过 Internet 访问技术服务,现在,我每次登陆 Facebook 或搜索航班,事实上都是在使用云计算。 Praising Gaw 云计算就是新的 Web2.0,一种既有...
它基本上是您的页面在Google,Yahoo,Bing的搜索结果中的简短摘要,有时甚至在Facebook的新闻提要中以漂亮的格式显示,包括星级,作者照片,图像等。 Rich Snippet如何提供帮助? 它仅向搜索引擎提供重要且精确的...
Profilo:一个Android性能库简介Profilo是一个Android库,用于从应用程序的生产版本中收集...用法示例java / main / com / facebook / profilo / sample中的示例应用程序显示了API的最基本用法。 您还可以找到预建的
集GoogleBigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身Facebook于2008将 Cassandra 开源,此后,由于Cassandra良好的可扩展性,被等知名网站所采纳,成为了一种流行的分布式结构化数据存储方案。...
Node.js REST API入门 该存储库是一个模板,可避免重写使用Express.js,MongoDB构建的REST API的所有基本身份验证代码。 目录 为什么这个模板 该存储库包括启动MEAN / MERN...项目架构和目录结构 . ├── api │
从先前的BBS到Blog、Space再到今天代表着NewsFeed特色的Facebook及众多模仺者。人是社会化生活的群体,在网上使用社区产品同样也希望尽可能体现出这种关系。丌过从长期观察中収现,很多国内产品设计者戒部分决策者都...
基本的Blogger模板 此模板是使用架构标记从头开始构建的,我使用架构是因为该帮助搜索引擎了解网站结构的一部分并帮助在搜索引擎中建立索引。 而且我使用开放图协议来帮助社交媒体,例如Facebook进行抓取并为博客...
Hive:由 Facebook 开源用于解决海量结构化日志的数据统计。 Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并 提供类 SQL 查询功能。 本质是:将 HQL 转化成 MapReduce 程序 1)...
React Native是Facebook公司最新推出的,强大的、开源的跨平台移动应用开发框架,它能大幅减少跨平台移动应用开发的工作量,并且代码结构清晰、简单易懂。同时React Native框架采用模块化结构,使应用版本的更新迭代...
React Native是Facebook公司最新推出的,强大的、开源的跨平台移动应用开发框架,它能大幅减少跨平台移动应用开发的工作量,并且代码结构清晰、简单易懂。同时React Native框架采用模块化结构,使应用版本的更新迭代...
本书的结构是按一个有基本的编程基础知识,刚学习JavaScript基本语法的读者的最佳学习路径来编写的。有一定基础的开发人员也可以将本书作为一本React Native开发的“字典”来使用,在开发时可以快速查找相关知识点的...
代码的基本结构 Fairseq的启示 此代码结构建立在Faiseq界面之上 Fairseq是FacebookAI团队的一个开源项目,该项目结合了不同的SOTA架构进行顺序数据处理 这还包括SOTA优化机制,例如制止戒酒,提高学习率,学习率降低...
它由用于运动的结构的基本模块(功能检测/匹配,最小求解器)组成,重点在于构建健壮且可扩展的重建管道。 它还集成了外部传感器(例如GPS,加速度计)测量,以实现地理对准和稳健性。 提供了JavaScript查看器来...
第 1 章 Hive 基本概念Hive:由 Facebook 开源用于解决海量结构化日志的数据统计。Hive 是基于 Hadoop 的一个数据仓库工具,可以将结