说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

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

HTML文档下载 WORD文档下载 PDF文档下载
尽管Google声称拥抱开源,但是其对于某些技术、服务器信息讳莫如深。在此方面,Facebook要显得大度得多。这也是为什么Facebook能够在短短的几年间一跃成为全球最大的社交网站。本文就来探讨Facebook背后的开源力量。

尽管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也开源了其所使用的基础设施和服务。介绍如下。

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 Android SDK:针对Android平台的SDK。
  • Facebook iOS SDK:针对iOS平台的SDK。
  • Facebook JavaScript SDK:针对JavaScript应用的SDK。
  • Facebook PHP SDK:针对PHP应用的SDK。

六、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背后的开源力量

比较两个文件-VB资料 采用递归算法删除带有多级子目录的目录-VB资料 菜单项的动态装入 -VB资料 处理加了密码的MDB文件-VB资料 VB创建临时文件 从公共对话框控件中提取多个文件名称 -VB资料 从全路径名中提取文件名 -VB资料 打印MsChart之类的控件 -VB资料 谈谈在VB6.0中如何使用资源文件进行编程 动画图像分解在VB动画设计中的应用 多重文档界面设计方法-VB资料 恢复回收站中的文件 -VB资料 VB获得位图文件的信息 VB获得文本框中光标所在行的内容 VB获取程序工作路径的方法 VB获取文件或文件夹属性 基于VB的通用折行打印程序 基于VB和EXCEL的报表设计及打印 VB建立多级目录 -VB资料 VB建立快捷方式-VB资料 VB建立文件关联 -VB资料 将RichTextBox 之中被选取的内容复制到剪贴簿-VB资料 将我的程序的文本直接送到WORD中(不用粘贴)-VB资料 开启文件属性窗口 -VB资料 快速读取 TextBox 第 N 行的资料 -VB资料 快速选择里List全部项目-VB资料 VB利用 App.Path 读取「应用程序所在之目录」 VB利用 EM_LINESCROLL 信息控制 TextBox 的卷动。 命名的技巧 -VB资料 目录所占的字节数-VB资料 VB判断文件是否在IE的缓存中 高分求助!请问怎么去掉IE的最大化和最小化按钮!! 关于UltraDev中浏览的问题???? 请大家推荐几本vc与汇编混和编程的好书 为什么会这样呢?关不掉的对话框 菜鸟提问:Form 与 Frame 有何区别? 以下是Delphi帮助的说明,谁能帮忙解释一下? 流星花园 我在image的click()方法里定义的变量,为什么在image_dblclick()里不能用?? 请教一下:金山词霸的屏幕取单词,是如何用程序实现的? 用VC怎么实现生成一个虚拟目录? 那位朋友有2000命令行模式下命令操作的帮助手册? IIS虚拟主机的问题,请大家给解决呀! 一个有关ListCtrl中拖动Column的问题。 请问那位大虾有用vc开发openssl的经验和原码? 兄弟我想学习数据库 但学什么好呐 给点意见 急求:将savedialog中多选的文件一次全都添进listview 谁有DirectX开发(SDK),给我一份,或留个连接地址 谁有DirectX开发(SDK),给我一份,或留个连接地址 怎样动态生成函数??? 你好!请问怎样给分? 高分debug!!!!!!! 再加50分请各位高手帮忙:http://www.csdn.net/expert/topic/598/598527.xml?temp=.1428339 请问各位,这种问题如何解决? from now , I'll come here usuauly 为什么邮件的接受时间会超前?高手请进来看看。 请大家推荐几本vc与汇编混和编程的好书 from now ,I 'll often come here. 请问: 中文版的 。NET 如何英文化????????????????? 高分debug!!!!!!! 怎样用vc编出来的程序能够隐藏起来,就象任务管理器那样 如何得到Query1->SQL->Add(select sum(xxx) from Table);的返回值? 谁能告诉我,这样得到的IPaddress 仅是本地dns解析的, 关于getdlgitem的问题? 如何得到登陆到服务器上的所有机器IP地址?????? 怎么样用C#在WEB页上画图形? 谁能告诉我,这样得到的IPaddress 是否仅是本地dns解析的? 请大家推荐几本vc与汇编混和编程的好书,请注明是哪个出版社出版 老问题:一个关于DLL输出函数的问题? 关于Win2K启动时程序自动加载的问题 Win2K里面输入法顺序调整的问题 同时有16个客户端从服务器端用FTP下载文件,但失败率很高,请问是什么问题 问大家一个C语言的教科书问题,谢谢了! 请高手明天,有关于JBUILDER6在XP下安装的问题 SOS ADO数据库中的varBinary字段的存取 TStream 怎么样改变标题颜色(不准用控件) 难道adaptive server anywhere6.0不支持中文吗? 我的窗口怎么处理不了方向键消息? 这是不是CArray的BUG?????????????? 关于如何修改历史记录文件夹属性的问题,,特急!!!!!!!!! 系统存储器和扩展存储器都在内存条上,是不是? 数据流传输的TNMStrm和TNMStrmServ组件和TNMUDP控件有什么不同啊? 在oracle如何这么做? 苹果3gs手机怎样设置重力感应?请知道的告诉我, 分母一定,分子和分数值成正比例. 把4改写成以千分之一为单位的数是( ),减少100个这样的计数单位后是( ),最低位是( ). 人坐在凳子上,人受的重力和人受到凳子的支持力 为什么不是二力平衡? 求教第五题判断题 0.9改写成千分之一为单位是()这是他与原数相比是()他的计数单位变() 蚕豆怎么做 分子一定,分母与分数值.能成正比例吗?并说说原因. 判断:一质点在某段时间内做曲线运动,则在这段时间内加速度一定不断改变. 弹力和摩擦力的方向一定互相垂直么拜托各位了 3Q 芥菜和盖菜的区别 牛顿每千克是不是加速度的国际单位 摩擦力与弹力的方向一定垂直吗?rt 芥菜和芥兰菜有什么区别? 一质点在某时间段内做曲线运动,在这段时间内为什么速度一定在不断的改变,而加速度可以不变 你听说过著名的牛顿万有引力定律吗?任何两个物体之间都有吸引力.如果设两个物体的质量分别为m1,m2,它们之间的距离是d,那么它们之间的引力就是f=gm1m2/d的平方(g为常数).人在地面上所 需要什么原料,具体步骤是什么, "牛顿"这个单位是计量什么的? 摩擦力的大小和什么有关 牛顿万有引力定律的作用都说牛顿发现了万有引力的定律那么他的这一发现对人类有什么好处?万有引力这一定律的用处是什么? 梅菜和雪里红有什么区别呀? 摩擦力大小与什么有关是初三的内容 不考虑什么最大静摩擦摩擦力大小跟什么有关 ?滑动摩擦力大小又和什么有关? 判断题.一个分数的分母不变,分子加上2,分数值就扩大2倍.对还是错,为什么 小白菜和大头菜有什么区别? 在讲高一物理时,滑动摩擦力和接触面的粗糙程度以用压力有关时,是直接给出公式好,还是从实验中得出来好呢?和接触面积无关倒是从一小个例子就可以得出来了,但要说和接触面粗糙程度以 一个数的分子不变,分母缩小2倍,这个分数值缩小2倍,还是扩大2倍,还是大小不变 如果x=九分之y,x和y成不成正比例,为什么 分数的分子一定,分母与分数值成不成正比例,为什么 牛顿的生活故事! 需要什么原料,具体步骤是什么, 怎样做`黄焖猪肉`?``` . 当人体缺碘时,甲状腺激素的合成量减少,甲状腺因此逐渐萎缩。 2.胰能分泌分解蛋白质的酶,也能分泌胰岛素。但胰岛素是由分布在胰腺细胞合成和分 为什么有摩擦力一定要有正压力(弹力)? 需要什么原料,具体步骤是什么, 物体受到在一条直线上大小分别为3N和5N的同方向的两个力的作用,则这个物体所受到的合力大小为--- 关于弹力和摩擦力,下列说法中正确的是() A.两物体间的摩擦力和压力方向一定互相垂直B.两物体间的摩擦力大小与它们间的弹力大小无关C.物体间的摩擦力大小跟接触面积有关D.物体间有弹 0.09的计数单位是 素烧蚕豆怎么做?需要什么原料,具体步骤是什么,谢谢 压力、推力、弹力、摩擦力的本质为什么是电场力?首先,一楼的,不要不懂装懂,再就是三楼四楼,可以思考一下,电磁力,电磁作用的本质还是电场力。 0.09的计数单位是多少 有两个力,一个为3N一个为5N他们的合力大小可能为? 一个最简分数,如果把分子扩大到原来的5倍,分母缩小到原来的6分之1,就变成了14,求原来的分数是多少? 曲线运动是变速运动,因为做曲线运动的物体速度方向在时刻改变, 需要什么原料,具体步骤是什么, 一个最简分数分子扩大5倍,分母缩小2倍得4又6分之1求这个分数是多少 曲线运动是变速运动,加速度一定变化吗 两个大小分别为2N和3N的力,同时作用在质量为1Kg的物体上,物体产生加速度的值是?是0到5N吗 一个最简分数,把它的分子扩大到原来的2倍,分母缩小为原来的2分之1后是2分之1,这个分数是多少?写出计算步骤.学过方程. 牛顿单位换算,我没学过,希望能详细点. 滑动摩擦力中,摩擦力方向与其物体弹力方向有什么关系吗?是永远相互垂直吗?摩擦力方向与其物体弹力方向有什么关系 是否相互垂直 如果不是请举例 机械振动如何测量 平抛运动加速度方向时刻改变是匀变速曲线运动我们把加速度(或合外力)恒定的运动称为“匀变速运动”,把加速度(大小或方向或两者同时)变化的运动称为“变加速运动”.我混乱了 滑动摩擦力的方向与物体间弹力的方向垂直 分子一定 分数值和分母 能否成正比例要用这种格式 例如:圆的周长和直径周长和直径是相关联的量 周长随着直径变化而变化 周长÷直径=π(一定)所以周长和直径成正比例 质量牛顿 单位换算 两物体间弹力方向与摩擦力方向一定垂直,这话正确? 分子一定,分数值与分母成正比例.( ) (是对的还是错的) 做匀变速曲线运动的物体 随着时间的延续 变小 为什么 可以画一个图吗 判断题, 分子一定,分母和分数值,成正比例吗 求伽利略 哥白尼 开普勒 托勒密的天文学观点的不同处和相同处 还有最好能附上他们的观点模型图 和一些如果图片或资料来源于网站的话求地址 如果找到资料了直接给地址也行
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘