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

[企业开源系列]后起之秀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背后的开源力量

改变 ListIndex而不发生 Click 事件 -VB资料 改变 TreeView 的背景 -VB资料 改变安装向导的背景色-VB资料 改变按钮的文本颜色-VB资料 功能强大的增强列表框 ――VB6控件LISTVIEW使用指南 关闭MDI窗体中所有的子窗体-VB资料 规范设计Windows应用软件菜单-VB资料 VB建立可滚动的视区 -VB资料 VB建立可下拉选择的属性 -VB资料 VB建立无模式窗口 -VB资料 将VB5中的ToolBar变成平面的 将程序从任务列表中隐藏 -VB资料 将我自已的命令加入窗体的控制菜单栏-VB资料 VB利用 UnloadMode 来控制窗体的卸载? VB利用Form_QueryUnload询问使用者是否关闭窗口 利用VB的图片框实现屏幕的滚动 利用VB动态改变Windows显示模式的两种方法 利用VB控制窗口显示风格 利用VB实现浮动按钮 VB利用子类处理技术限制窗体的大小 奇形怪状的窗体 -VB资料 强制ComboBox弹出下拉框 -VB资料 强制和防止窗口重画 -VB资料 巧用“关于”对话框-VB资料 请问在VB中如何关闭别的应用程序窗口 确定屏幕分辨率-VB资料 让VB5支持动画光标 让窗口拒绝接受键盘和鼠标事件 -VB资料 让窗体处于最前面 -VB资料 让窗体居中 -VB资料 让所有的控件都动起来 -VB资料 有关ATL的最基础问题 怎样监控icmp包?用自编的程序 急急急急急!!!!!!!!!!,Band里的内容过长,如何让它自动的分页??? 使对话框最小化渐变到托盘区。 各位高手!!我用的是win2000工作组模式,为什么我能访问别人,而别人不能访问我呢??? 有关文件的读写问题。 大家讨论一下内存分配、释放的问题 关于在jsp中运用sqlserver的小问题!!! 怎么样可以将session的存活期限设置成“永远不死”?? 送分题,如何取得一个表的所有字段名? 那里可以下载Wrox系列书的英文版? 无法启动sqlserver的问题. DELPHI中dbgird的语句问题 关于控制动态产生Checkbox,并进行动态控问题 BCB中使用MSComm控件,无法定义动态数组变量,该怎么办?--急啊!在线等待 战神----巴蒂 两个问题! 用ADO访问DBASE数据库 百分求救:关于COM方法的reference参数不返回值的问题 请教各位高手 如何将程序中不同的查询结果写入报表? 怎样自编程序监控icmp包,应该截获什么消息,还是用别的方法? java本地化的问题(各位帮帮我!) 一个关于类型转换的菜鸟问题!! 招聘 Jpeg中FFd9可以有几个? ?????不同窗口中多个参数传递的问题,在线等待中........ 关于 EmbeddedWb 的Mshtml_tlb, SHDocVw_tlb 问题! 各位大虾 帮我翻译一下 急 悲... DBGrid为什么没有数据集记录失去焦点事件? 怎样手动和在程序中更改SEQUENCE的当前值? 怎么结贴子,什么叫FAQ? 关于“软件蓝领”的3个疑惑。 在函数中以引用方式调用结构的问题?给我能给的最高分100 怎样实现随机打印一个数据表的几个子段? 大家看看,这个功能如何实现? 怎样编一个程序读取服务器上的时间? VC工程不能正常打开? Jpeg中FFd9可以有几个? datawidgets简介!简单的问题---“送大伙一点小分” 新人到!!有问题想要问!!! 有谁知道sybase12.5中定义的所有保留字keywords? 为什么我的Tomcat突然找不到Serverlet了 关于报考程序员的问题 请问:一个应用程序发布时需要为每个发布的实例建立一个唯一标识用GUID好不好? 介绍些ActiveX/COM的好书吧! 图片的名字是中文就不能显示,怎么办 奇怪的问题关于NULL! 高分求助:pb中数据传输的问题 请教,在窗体改变大小时,有没有通用的办法,改变窗体内控件的大小,位置 怎么跑100米和200米啊?星期三就要比赛了. 地热供暖疑问《不热》我家是电厂统一供暖,5楼,83平 地热3组 把冷山墙.4楼6楼停暖 ,测量出水管温度37°现在室外温度-17°,我家室内温度15度左右,地热已经清洗.气也放了、过滤阀也清洗了.现在 谁知道如果不慎将油汤洒到衣服上,可以用什么方法除去?并说明依据原理. 致100米、200米、800米、4*200米运动员 台灯灯罩的原理学习或工作用的台灯灯罩是利用了光的( )定律将光线尽量集中照到需要的地方,因此灯罩内表面应该尽量( ) 一台单缸四冲和柴油机,每分钟转1800r,每一个工作循环燃气做的功为500J,如果汽缸的效率为30%,做这些功需要完全燃烧多少柴油?一台单缸四冲和柴油机,每分钟转1800r,每一个工作循环燃气做的功 什么是实验室反应釜?它的作用是什么? 谁会手工制作台灯的灯罩?谁会用生活中常见的材料制作台灯的灯罩,要方法简单,易学,式样别致的. revolve door是什么啥意思 最近家里蚊子特别多怎么办哦!求大神帮助 谁知道牧童这首诗是谁写的 怎么自己做台灯灯罩? 海南的蚊子为什么那么毒?被叮一下就肿起一个大包,隔天都还会痒,讨厌死叻! 哪位能把牧童这首诗的意思写出来吕岩写的 1千克的液体物质吸收了2.1×1000的热量后,气温度有25°到35°.该物质的比热容是多少?这种物质是什么? 为什么澳大利亚的蚊子这么毒阿大神们帮帮忙 a 如果不慎将油汤洒到衣服上,可以用汽油除去的原理 家里的蚊子.苍蝇从哪里来?如何才能彻底消灭它们?求大神帮助 关于铝合金箱长城包装箱怎么样 不透明体的颜色由通过它的色光决定,不透明物体的颜色是由它反射的色光决定的?举个例子!就这样! 第13频道至第68频道属于微波中的“分米波”,试着算出第68频道的波长范围就知道这个呼称的原因了. 铝合金箱长城包装箱? 没财富了 但是希望高手和懂汽车电路的来小弟之前改了大灯 不是总成.Q5透镜远近光氙气灯 以及天使眼泪眼.之类的 后来感觉不妥就全部拆除了剩下氙气灯现在残留一些疑惑需要大家帮忙1、 阅读短文,回答问题:为了满足人们对能源不断增长的需要,科学家们设想在空间建立太阳能电站来利用太阳能.这种空间太阳能电站建在地球同步轨道上,其工作过程如图所示.在太阳能收集 理想气体的基本定律有哪些?其内容是什么? 奇特的电子生物第一段有什么作用? 光学波长频率的计算红光在水中的波长和绿光在真空中的波长相等,水对红光的折射率是4/3,则红光和绿光在水中的频率之比为?我要过程,和解释? 《牧童》表达了什么情感? 脂质具有生物学功能的是什么 微波属于?,但其波长较短,频率较高. door是什么意思? 免疫系统具有哪些功能,正常或异常时有何生物学效应? 书上说:“体系只做体积功而不做其他功时,恒容反应热等于体系热力学能的变化”.那我有个疑问,它说是只做"体积功",做体积功是要变体积的,但又说是"恒容反应热",但"恒容"又是不变体积的, 台灯的灯光,透过灯罩开口射出后的状况 led台灯灯罩材料有哪些? 汽车无极变速器(CVT)它的原理是什么? Q(热量)、T(热力学温度)、V(系统体积)、W(功)、ρ(密度),其中属于状态函数的是 双灯罩台灯灯内外层灯罩分别有什么作用 火电厂中什么气体可看作理想气体?什么气体可看作实际气体? 塑胶熔点与阻燃性的关系 door是什么意思 卧式反应釜的加热系统如何做恩?说说啦 牧童这首诗中抓住什么进行描写 当扶手拖拉机上的柴油机出现故障而使转速急剧增加时,正常的操作已经不能使它停转,下列应急措施中,可行的是:A.捂住进气口B.立即找一个隔热的东西,捂住排气口C.脚踩刹车板,同时手拉制 应该是溶解度单位.还有这个Ncm3/g?不知道那个3时不是个上角标.n为什么要大写! 举例说明古今声调的关系(文字说明,从古声调至今声调,再从今声调至古声调) 一台单缸柴油机,飞轮每分钟往返转动3000转,那么柴油机每秒钟曲轴往复100次, 我400米59秒 800米2分20秒 请问我100米.200米正常应该跑多少?我400米59秒 800米2分20秒 请问我100米.200米正常应该跑多少?我14岁 175cm 60KG注 我短跑不是很厉害 家里地热的问题 供暖我家是复式的房子 家里都是地热 现在发现 一到供暖的时候 楼下的地热就自动过水 自动循环的流动 但是楼上的地热却是都是空气 把空气放出去 就能听到水在流动 学习或工作用的台灯上有一个灯罩其作用是利用光的什么定律将光线尽量集中照到需要照射的地方,因此灯罩内表面尽量什么? 若不慎将油汤洒到衣服上,可以用什么办法出去,说明依据的原理-_-|||高一化学.. 离子浓度大小判断,D选项哪里出错呢?.A选项感觉也不对,A选项对吗?麻烦详细解释 《牧童》这首诗是什么意思? 汽车变速箱中的齿轮是一档齿轮大还是五档齿轮大? 什么是地热供暖 牧童这首诗的意思是什么? 鼓怎样改变音调 音调的单位是如何定义的 如果不慎将油汤洒到衣服上可用什么方法除去说明依据的原理
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘