Facebook的基本架构

原文出自: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、输入预搜索使用自己定制的存储器和检索逻辑。

猜你喜欢

转载自tigerlchen.iteye.com/blog/1742851