原文出自: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分钟左右的时间来解析它,包括老的、新的、被抄袭的。一直打算把这个解析过程写下来,但讲的时候可以图音并茂,写...
Wedge架构中的一个重要组件是“FBOSS”(Facebook Open Switch Software),这是Facebook开发的交换机操作系统,支持OpenFlow和其他SDN协议。FBOSS提供了对硬件资源的低级访问,使得Facebook能够根据需要调整网络...
本篇文章将深入探讨全球最大的在线社交平台——Facebook的社交图谱结构,并对其关键特征进行详细的分析。 #### 全球结构特征 首先,我们关注的是Facebook社交网络的全局结构特征。研究表明,Facebook社交图谱几乎...
### Facebook数据仓库揭秘:RCFile高效存储结构 #### RCFile:一种混合型高效存储结构 在大数据处理领域,特别是对于像Facebook这样的大型社交平台来说,数据仓库的设计与优化至关重要。Facebook提出了一种新的...
Graph API的请求通常以HTTP GET或POST形式进行,结构为:`https://graph.facebook.com/vX.Y/{object-id}?access_token={access-token}&fields={fields}`。其中,X.Y是API版本号,object-id是你想要查询的对象ID,...
库的代码结构通常会按照Facebook的API结构组织,每个功能模块对应一个或多个Go函数。开发者可以通过阅读库的源代码和提供的示例来学习如何使用这些函数。 例如,要获取用户的基本信息,可以调用`GetUserID()`函数,...
1. 概览:这部分会简要介绍公司的基本信息,包括公司名称、注册地、主要办公地址、联系方式、公司官员的姓名和职务,以及联系人的信息。 2. 招股说明:此处会描述公司拟进行的股票发行的详细信息,包括发行的股票...
SpringMVC是Spring框架的一个组件,主要用于构建Web应用程序,它提供了一种模型-视图-控制器(MVC)架构模式,使开发者能够更高效地组织和管理应用代码。 首先,要实现Facebook登录,我们需要注册一个Facebook...
首先,我们要理解Java Web开发的基本框架。在Java Web开发中,通常会使用Servlet、JSP(JavaServer Pages)或者更高级的MVC(Model-View-Controller)框架如Spring MVC。Servlet用于处理服务器端的业务逻辑,JSP则...
8. **Web安全**:虽然这是一个学习项目,但了解基本的Web安全实践也很重要,如防止跨站脚本攻击(XSS)、跨站请求伪造(CSRF)等。 9. **版本控制**:使用Git进行版本控制可以帮助开发者跟踪代码更改,协作开发,...
#### 二、FML 的基本结构与元素 FML 的文档结构通常包含一个根元素 `<fb:fbml>`,该元素包含了所有 FML 特有的标签和属性。例如: ```xml 登录 ``` 在上述例子中,`<fb:login-button>` 是一个典型的 FML ...
Facebook的数据中心使用的是经过精简的主板设计,其中包含了英特尔和AMD主板的基本必要组成部分。通过对主板进行简化处理,去除了一些不必要的功能模块,不仅节约了成本,还能提高服务器的整体效率。这种方式虽然看...
- `setup.py`: 安装脚本,描述了项目的基本信息和如何构建、安装。 - `facebook_wda`: 存放库的主要代码,包括模块和类。 - `tests`: 测试用例,用于验证库的功能是否正常。 - `README.md`: 项目的介绍和使用指南。 ...
【Facebook签到数据】是一个广泛应用于机器学习领域,特别是地理推荐系统和社交网络分析的...此外,通过对大量签到数据的分析,还可以揭示社交网络中的群体行为模式,研究城市空间结构,甚至预测热门地点的出现和发展。
#### 一、Facebook应用程序种类及架构 - **应用程序种类**: - **安装到Facebook的应用(Apps on Facebook)**:这类应用被设计为嵌入到Facebook页面框架(Canvas)中,用户可以直接在Facebook内部使用这些应用。 -...
- **第8章:Introducing the Facebook Platform**:全面介绍Facebook平台及其API体系结构,为开发者提供指南。 - **第9章:Facebook Developer Tools**:详述Facebook为开发者提供的各种工具和服务,帮助提高开发...
从给定的文件中可以看出,本文的知识点主要集中在Facebook这个社交网络平台的基本情况、重要数据、公司使命以及公司管理层和分布广泛的办公地点。 Facebook是一家由马克·扎克伯格于2004年创建的社交网络服务网站。...
开发者需要理解XMPP的基本概念,如JID(Jabber ID)和如何建立连接,以便实现聊天功能。此外,Facebook Chat API可能包括创建会话、发送消息、接收事件通知等功能,开发者需要熟悉这些接口的调用方式。 接着,...
在深入探讨Android Facebook客户端的相关知识点之前,我们首先需要了解Android应用程序的基本架构和Facebook的SDK。 1. **Android应用程序基础**: - **AndroidManifest.xml**:每个Android应用的核心配置文件,...