阅读更多
尽管Google极其推崇开源,并推出大量的开源项目,但是从根本上来看,Google的开源力度、开放程度远远比不上Facebook。这也是为什么Facebook能够在短短的几年间,一跃成为全球最大的社交网站的原因之一。本文就来看看Facebook背后的开源力量。



[企业开源系列]系列专注于全球著名企业(包括国内企业)中的开源现状,探讨开源软件的力量,以使更多的开发者了解开源、贡献开源,打造更加和谐的国内开源生态。

一、Facebook vs. Google

Facebook从2004年创始以来,已经从一个哈佛大学校内网站一跃发展成为了全球最大的社交网站。目前,Facebook的用户数量已经突破10亿,全球平均每天有7亿用户在使用其服务,远远将Google+(活跃用户3.43亿)甩在了身后。

相比Google+,Facebook已经完胜。Facebook大量的用户也造就其巨额的广告收入,在互联网广告业务方面,Facebook已经成为Google最具威胁的竞争对手。

Facebook发展如此迅速,与其内部大量的人才分不开。而近几年,Facebook与Google的竞争也体现在人才抢夺战中。Facebook疯狂从Google、微软、苹果、雅虎等公司挖掘人才,以微软为例,2012年每1名Facebook员工跳槽至微软,就有30.5名微软员工跳槽至Facebook。而Google对Facebook的该比例为15.5 : 1。

如今Facebook的员工总数已达5000人,尽管如此,Facebook公司的规模还只相当于Google的十分之一(Google员工已经达到5万多人)。而在资金方面,Facebook比Google也差了一大截。

在人力、财力都不及对手的情况下,Facebook凭什么得以与互联网的霸主Google抗衡?其中一个很大的因素就是开源,这样可以吸引全球更多的开发者为你工作,以此来弥补某些不足。

二、Facebook的开源大手笔

尽管Google一直声称拥抱开源,但是Google对于其某些技术、服务器方面的信息讳莫如深。而在此方面,Facebook要显得大度得多。

1.  开源Facebook平台代码

Facebook在2008年选择将该平台上的重要部分的代码和应用工具开源。Facebook称,平台已经基本发展成熟,此举可以让开发者更全面地理解整个Facebook平台,更容易地为Facebook开发应用软件,并可以回报社区。

该项目代号为“FBOpen”,其中包含了实现Facebook平台的一些基础设施、功能等,如API架构、FQL分析器、FBML分析器、FBJS,以及许多常用方法和标签的实现,代码基于PHP。这意味着其他开发者可以很方便地利用Facebook所采用的基础设施和技术。

项目地址:https://github.com/facebook/platform/tree/master/fbopen

开源的代码中,绝大部分使用CPAL(Common Public Attribution License)许可,而FBML分析器使用的是MPL(Mozilla Public License)许可证。

2.  开源数据中心和网络系统

为了在数据中心上与Google对抗,2011年Facebook宣布了开源计算项目(Open Compute Project,简称OCP)计划。该项目旨在创建“开源的”数据中心硬件,Facebook数据中心设计图、服务器配置、数据中心监控界面等悉数开源。Facebook此举的目的是为大数据中心建立更快、更便宜、用材更少的硬件。更重要的是,通过OCP免费提供的设计,任何企业都可以使用它,并对其进行调整。

今年5月份,Facebook又宣布将其包括交换机等网络设备在内的网络系统开源。

采用开源数据中心,使得Facebook可以与Google这一规模、经济实力都在它之上的对手在数据中心领域展开竞争。

三、Facebook开源的基础设施

除了大的系统平台、数据中心外,Facebook也开源了其所使用的基础设施和服务。介绍如下。

1.  Apache Cassandra

这是一个分布式的存储系统,用来管理结构化数据,并可以扩展非常大型的、跨多个商品服务器(commodity servers)的大数据集,而不用担心出现单点故障。

2.  Apache Hive

这是一个数据仓库基础设施,构建于Hadoop之上,其提供的工具可以轻松对大数据集进行数据汇总、即席查询(adhoc querying)和分析等。

3.  FlashCache

这是一个针对Linux的通用的回写块缓存。它可以作为一个可加载的Linux内核模块,在文件系统之下使用。

4.  HipHop for PHP

这是一个PHP虚拟机、运行时、JIT(Just In Time,实时生产系统)。它的前身是HPHPc(可将PHP代码编译为C++的项目)。HipHop虚拟机为PHP代码带来了一个大大的性能提升。

5.  folly

folly(Facebook Open-source LibrarY)是一个提供类似std和boost功能的底层库,基于C++11特性。folly的开发者包括了Andrei Alexandrescu之类的C++编程领域的大师级人物。folly与std和boost的最大不同就是在大规模的场景中效率更高。

6.  Scribe

这是一个可扩展的服务,用于从大量的服务器中实时聚合日志数据流。

7.  Thrift

该项目提供了一个框架,用于可扩展的跨语言服务开发。Thrift结合了一个软件堆栈和一个代码生成引擎,来构建可高效工作的服务,可无缝跨C++、Java、Python、PHP、Ruby、Erlang、Perl、Haskell、C#、Cocoa、JavaScript、Node.js、Smalltalk、OCaml、Delphi和其他语言。

8.  Tornado

一个相对简单、无阻塞的Web服务器框架,使用Python编写。它被设计用来处理成千上万的并发连接,这使得它非常适合实时Web服务。

9.  React

这是一个用于构建用户界面的JavaScript库,用来呈现instagram.com和Facebook的部分站点。

10.  FBMock

FBMock是一个PHP mocking框架,简单且易于使用。

四、Facebook开源的内部开发工具

Facebook也选择将其内部开发人员所使用的工具开源。

1.  codemod

可以协助开发者对大型代码库进行部分自动化重构工作,但仍然需要人的监督和不定期的干预。

2.  Facebook Animation

这是一个JavaScript库,可以帮助开发者使用DOM和CSS来创建自定义动画。

3.  Online Schema Change for MySQL

允许你在线更改集群中的大型数据库表,而不需将集群离线。

4.  Phabricator

这是一个Web应用程序集合,可以帮助开发者轻松编写、审查和共享源代码。目前数百名Facebook工程师每天都在使用它。

5.  PHPEmbed

该工具使得嵌入PHP对于开发者来说变得真正简单,这是一个更方便和更简化的、构建于PHP SAPI之上的API。

6.  phpsh

该工具为PHP提供了一个交互式的shell,功能包括readline历史、标签自动完成以及快速访问文档等。有趣的是这个工具是用Python写的。

7.  Three20

这是一个针对iPhone开发者的Objective-C库,提供了很多UI元素和数据辅助工具,不过该项目现在已经不维护了,不过你可以用于iOS5/6系统的应用开发中。

8.  XHP

XHP是一个PHP扩展,可以增强PHP语言的语法,比如将XML文档片段变为有效的表达式。

9.  XHProf

这是一个针对PHP的函数级的分层分析器,拥有一个简单的基于HTML的导航界面。

五、开发平台

Facebook的平台工程团队也发布和维护着一些开源的平台SDK,这些SDK可以帮助开发者很方便地将Facebook整合进第三方应用中。

六、Facebook工程师贡献的开源项目

Facebook的工程师也参与了很多开源项目的贡献。这些开源项目在Facebook中都有应用,并在生产环境中得到了优化。

1.  Apache Hadoop

Apache Hadoop提供了可靠的、可扩展的、分布式的计算基础设施,在Facebook中用于数据分析。

2.  Apache HBase

这是一个分布式的、面向列的数据存储,构建于Hadoop分布式文件系统(HDFS)之上。

3.  Cfengine

这是一个基于规则的配置系统,用于服务器的自动配置和维护。Facebook使用Cfengine来维护主机配置,并在产品层面上自动化许多管理操作。

4.  jemalloc

这是一个快速、一致、支持堆分析的内存分配器。Facebook的工程师为其添加了堆分析特性,并做出了很多优化。

5.  memcached

这是一个分布式的内存对象缓存系统。Memcached最初不是由Facebook开发的,但Facebook已经成为了该技术的最大用户。

6.  MySQL

MySQL是Facebook数据库基础设施的骨干。你可以在Launchpad中找到很多Facebook贡献的补丁,还可以通过MySQL@Facebook页面来了解Facebook如何使用它。

7.  PHP

Facebook的大部分代码都是使用PHP开发的。它的语法很简单,让Facebook在产品上能够更快地迁移和迭代。

8.  Varnish

在Facebook,该项目每天处理来自全世界用户的数十亿请求。当你加载朋友的图片和和头像时,Varnish就有参与。

总结

由上可知,Facebook在开源方面的力度非常大。在与规模、财力都在其之上的Google的竞争中,开源确实是一个非常好的途径——采用开源项目,使得Facebook可以使用很少的成本即可快速构建稳定、高效的系统;而通过将自己的产品开源,Facebook吸引了全球大量的优秀的开发者为其工作。

Facebook的所有开源项目都可以在Github中找到:https://github.com/facebook

利用开源,使得Facebook这个后起之秀能够快速崛起,并逐渐缩小与互联网霸主Google的差距。还有哪些企业利用开源获得了成功呢?请关注[企业开源系列]的后续报道。

相关阅读:[企业开源系列]Google背后的开源力量
  • 大小: 34.6 KB
8
0
评论 共 8 条 请登录后发表评论
8 楼 pi88dian88 2013-11-29 11:17
很犀利丫~
7 楼 comsci 2013-08-22 10:43
facebook干脆和谷歌合并算了 当一个虚假联盟 多有趣呢
6 楼 saiyaren 2013-08-21 12:24
loogson 写道
saiyaren 写道
houyujiangjun 写道
都是伟大的公司。致敬      
可惜facebook的东西在天朝无法使用。

我们就在用facebook的hiphop

请问你能直接访问facebook吗?

我可以访问facebook的git
https://github.com/facebook/hiphop-php
5 楼 loogson 2013-08-21 11:53
saiyaren 写道
houyujiangjun 写道
都是伟大的公司。致敬      
可惜facebook的东西在天朝无法使用。

我们就在用facebook的hiphop

请问你能直接访问facebook吗?
4 楼 saiyaren 2013-08-21 11:45
rainv 写道
不是说facebook已经放弃hiphop了么。

你听谁说facebook放弃 hiphop了?hiphop 目前主线版本已经2.1了
3 楼 rainv 2013-08-20 21:33
不是说facebook已经放弃hiphop了么。
2 楼 saiyaren 2013-08-20 14:01
houyujiangjun 写道
都是伟大的公司。致敬      
可惜facebook的东西在天朝无法使用。

我们就在用facebook的hiphop
1 楼 houyujiangjun 2013-08-20 12:18
都是伟大的公司。致敬      
可惜facebook的东西在天朝无法使用。

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 人工智能\\机器学习\\统计学\\数据挖掘之间有什么区别?

    机器学习是一门涉及自学习算法发展的科学。这类算法本质上是通用的,可以应用到众多相关问题的领域。 数据挖掘是一类实用的应用算法(大多是机器学习算法),利用各个领域产出的数据来解决各个领域相关的问题。 统计学是一门研究怎样收集,组织,分析和解释数据中的数字化信息的科学。统计学可以分为两大类:描述统计学和推断统计学。描述统计学涉及组织,累加和描绘数据中的信

  • 统计学、人工智能、机器学习、数据挖掘的区别与联系之(1) 概念

    自认为从事机器学习已经有些时日了,常常听到统计学、人工智能、机器学习、数据挖掘、机器视觉吧啦吧啦....自己也曾迷茫,自己究竟算哪个方向的呢?因此起意整理一套系列文章将这些概念描述清楚,旨在理清这些错综复杂的概念,促使我们正对性学习我们关注的方向,我想这对我们搞算法也是相当必要的。统计学 统计学(英语:Statistics)是在资料分析的基础上,自17世纪中叶产生比逐步发展起来的一门学科,它是研

  • 【企业开源系列】后起之秀Facebook凭什么挑战互联网霸主Google?

    ">Google极其推崇开源,并推出大量的开源项目,但是从根本上来看,Google的开源力度、开放程度远远比不上Facebook。这也是为什么Facebook能够在短短的几年间,一跃成为全球最大的社交网站的原因之一。本文就来看看...

  • Facebook凭什么挑战互联网霸主Google

    一、Facebook vs. Google  Facebook从2004年创始以来,已经从一个哈佛大学校内网站一跃发展成为了全球最大的社交网站。目前,Facebook的用户数量已经突破10亿,全球平均每天有7亿用户在使用其服务,远远将...

  • Facebook背后的开源力量

    尽管Google极其推崇开源,并推出大量的开源项目,但是从根本上来看,Google的开源力度、开放程度远远比不上Facebook。这也是为什么Facebook能够在短短的几年间,一跃成为全球最大的社交网站的原因之一。 一、...

  • 【企业开源系列】Google背后的开源力量

    《全球著名互联网企业背后的开源力量》文章中可知,目前开源软件已经成为了各大互联网企业背后的支撑力量,并逐渐改变着世界软件开发的格局。 [企业开源系列]系列专注于全球著名企业(包括国内企

  • 【企业开源系列】全球著名互联网企业背后的开源力量

    开源软件正在逐步改变全球软件开发的格局,越来越多的企业开始使用开源软件,并反过来为开源项目贡献力量。 一提到开源,大部分人首先想到的是免费。但其实价格并不是开源软件唯一的优势,其他优势还包括: ...

  • 【企业开源系列】Twitter:收发一条推文的背后

    Twitter被称为“互联网的短信服务”,允许用户发布不超过140个字的微博客,该创意来自Twitter的联合创始人Jack Dorsey,这个在7年前被分析师称为“有史以来最愚蠢”的创意,不料如今已经成为了风靡全世界的社交网络...

  • Facebook 2013年的9个开源项目

    Facebook是全球最大的社交网站,它的成长背后离不开开源力量。...Facebook不仅取之开源,更是不断开源其内部项目,将内部成果反馈给开源社区,可以说,这才是一个伟大公司应有的态度。通过不断开...

  • Facebook VS Google

    尽管Google极其推崇开源,并推出大量的开源项目,但是从根本上来看,Google...[企业开源系列]系列专注于全球著名企业(包括国内企业)中的开源现状,探讨开源软件的力量,以使更多的开发者了解开源、贡献开源,打...

  • 开源网络风云变幻,看各家爱恨情仇

    近日,美国对中国企业的限制动作不断: 5月15日,美国将华为公司及其附属公司列入出口管制“实体名单”。 随后美国谷歌公司宣布将停止提供安卓(Andriod)系统的技术支持与服务,而安卓系统一直是世界知名的开源...

  • 细数百度公司的知名开源项目

    摘要:作为国内技术领先的互联网企业,百度公司也陆续开源了不少项目。其中一些如UEditor、Tangram已经在业界非常知名。 作为国内技术领先的互联网企业,百度公司也陆续开源了不少项目。其中一些如UEditor、...

  • 2019年,如何从小白升级到大牛程序员呢?

    百度成为继Google、Facebook、IBM后另一个将人工智能技术开源的科技巨头,同时也是国内首个开源深度学习平台的科技公司。 “ 中国人要有自己的深度学习框架 ”,这句话好像是在参加百度AI大会的时候听到的,还是...

  • 一、ATM的基本概念

    同步和异步                   为了更好地了解ATM,有必要先对时分复用(TDM)和同步传输(STM)作一简单的回顾。TDM即是在一条通信线路上按一定的周期(如125ns)将时间分成称为帧的时间块,而在每一帧中又分成若干时隙,每个时隙可携带相应的用户信息。当某一用户通过呼叫建立起通信后,在此期间,其信号将固定地占用各帧中的某一时隙,直至通信结束,如图1所示。          而对

  • 六.ATM的现存问题及前景

      虽然ATM的相关技术及研究发展很快,但ATM总体上仍有待于进一步完善。无论在其开发和使用的实践中目前都还存在一些问题,如ATM的话务量管理及拥塞控制方面的技术并不理想;目前ATM产品的价格普遍较高;ATM的标准尚不完善,在适应性、通用性及互操作性等方面均带来一些问题。  尽管如此,Am作为一种全新的交换技术和下一世纪通信技术的主流已是不容置疑的。ATM最早是作为新一代的电信技术基础而提出来的.

  • 三、ATM的传输控制

    监视和管理信元在网络中的传输叫作传输控制。它做得好坏至关重要,特别是对时延敏感的视频数据。不同类型的通信需要不同水平的服务。一个ATM网对不同通信类型提供不同的QOS(服务质量)水平。  1.ATM通信类型   我们可以按ATM网的三个特性:带宽、等待时间和信元延迟变化来对通信类型分类。带宽是为支持某一连接的网络容量大小。等待时间是与连接有关的延迟量。若需要低的等待时间意味着信元需要快速从网络中的

  • 四、ATM网络的LAN仿真

    现有网络上运行的网络层协议种类繁多,如IP、IPX、Appletalk、DECnet、Banyan、Vines等,要实现ATM网络与现有的多种LAN网络互连的关键是使用相同的网络层协议,例如统一使用IP和IPX协议,因为网络层的功能便是为高层协议和应用程序提供一致的网络视图。  ATM网络取得成功的一个关键因素就是具备与这些技术互操作的能力。跨越ATM网络运行网络层协议有2种实现方式。一种称为本机

  • 五、LAN仿真的运行过程

      LANE通过一系列ATM连接进行相互通信。LEC间保持各自连接,以便传输数据和控制流量。  控制连接包括直接配置虚通道连接(Virtual Channel Connection,VCC)、直接控制VCC和分布控制VCC。直接配置VCC是一个双向点对点VCC,是由LEC设置到LECS的;直接控制VCC也是个双向VCC,是由LEC设置到LES的;分布控制VCC是一个单向VCC,从LES返回LEC,

Global site tag (gtag.js) - Google Analytics