facebook 支撑技术
来源:互联网 发布:网络机顶盒怎么联网 编辑:程序博客网 时间:2024/04/27 20:25
支撑技术
开源
Facebook的源代码大部分采用Common Public Attribution License (CPAL),除了FBML parser部分采用的是Mozilla Public License (MPL)。
Facebook现有超过24000个应用,世界各地有超过40万开发者在为其开发应用程序,每天都有140个左右的应用上线。[2]
域模型
用UML类图的形式,显示了Facebook系统所管理的信息。它提炼出了Facebook数据库中的实体、关系、字段。
技术构架
Facebook使用LAMP(Linux、Apache、MySQL、PHP)作为技术构架。Facebook的一个技术构架工程师Steven Yoosure在博客中写到:几乎我们所有的服务器都运行开源软件。我们的Web服务器是Linux,Apache和PHP。我们数据库是MySQL。我们使用memcached来保证网站的快速反应。一些后台应用Python、Perl和Java,以及一些gcc和Boost。程序员用Subversion和git来进行代码管理。还有很多--像很多网站一样,从头到脚都是开源软件。
编辑本段主要软件
Memcached
Memcached是当今互联网上最著名的软件之一。它是一个分布式的内存缓存系统,Facebook(包含其他很多网站)用它作为Web服务器和MySQL服务器之间的缓存层(因为数据库访问相对比较慢)。多年来,Facebook已经对Memcached和它的周边软件进行了很多优化,比如对network stack的优化。
Facebook每时每刻都有数10TB的数据缓存在数千台Memcached服务器上。它可能是世界上最大的Memcached服务器集群了。
HipHop for PHP
作为一种脚本语言,和本地代码相比是运行缓慢的。HipHop可以将PHP转换成C++代码,然后再进行编译,这样可以获得更好的性能。由于Facebook严重依赖PHP,所以通过HipHop可以让Web服务器的性能得到提高。
一个工程师小团队在Facebook(一开始只有三人)花了18个月时间开发HipHop已经投入正式使用。
Haystack
Haystack是Facebook的高性能图片存取系统(严格来说,是一个对象存储系统,因此它并不仅限于存储照片)。它工作繁忙;要管理超过200亿张上传的照片,并且每一片照片被保存为四种不同的分辨率,因此有超过800亿张照片。
它不仅要能处理上亿的照片,而且性能也是至关重要的。正如我们前面提到的,Facebook每秒钟要处理约120万张照片,而且不包括CDN上的,这是一个惊人的数字。
BigPipe
BigPipe是Facebook开发的的动态网页处理系统。为了获得最佳性能,Facebook用它来按分块处理每个网页(称为“pagelets”)。
例如,聊天窗口,新闻Feed等是通过分块分开进行传输的。这些pagelets可以并行工作,不仅可以提高性能,而且即使其中一部分失效或中断,也不影响用户的正常访问。
Cassandra
Cassandra是一个可以避免单点故障的分布式存储系统。它是NoSQL运动的一个典范,并已开放源代码(它甚至成为一个Apache项目)。Facebook在收件箱搜索中使用它。
除了Facebook,其他网站也在使用它,例如Digg。
Scribe
Scribe是一个灵活的日志系统,Facebook在内部大量使用它。它能够处理Facebook这样超大规模的日志记录,并且能自动处理新生成的日志记录类别(Facebook有数百个日志类别)。
Hadoop and Hive
Hadoop是一个开源的map-reduce实现,它可以轻松处理海量数据。Facebook用它来进行数据分析(我们都知道Facebook有巨量的数据)。Hive起源于Facebook,它使得针对Hadoop进行SQL查询成为可能,从而非程序员也可以方便地使用。(注:Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能,可以将SQL语句转换为MapReduce任务运行。)
- facebook 支撑技术
- Facebook支撑万亿Post搜索背后的技术窥探
- 总结服务器支撑技术(Linux)
- Facebook技术构架
- facebook网站框架技术
- facebook网站框架技术
- facebook技术架构
- Facebook后台技术探秘
- facebook网站框架技术
- Facebook技术架构
- Facebook反思HTML5技术
- 信息检索的核心支撑技术
- 信息检索的核心支撑技术
- 建造支撑系统的三大技术
- 信息检索的核心支撑技术
- 评述:信息检索的核心支撑技术
- AJAX需要组件技术作为支撑
- 信息检索的核心支撑技术
- 1.C#基础学习笔记3---C#字符串(转义符和内存存储无关)
- 【新技术_05】泛型
- myMemcpy
- 如何写出无法维护的代码
- For My First Blog
- facebook 支撑技术
- [个人笔记]库设计——测试设计(openMvl)
- hibernate根据pojo自动建表和更新表
- Linux/Unix环境下的make命令详解
- 云计算的选择:X86 VS Power——屌丝的逆袭
- C语言编译全过程
- 显式intent和隐式intent区别
- zoj 1455(差分约束)
- Android Service 初探