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

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

IBM IT实践达人赛24强出炉 决赛圈比拼创新实践力 [简讯] Perl迎来25岁生日 软件开发者最重要的四大技能 为什么说惠普、戴尔和IBM在互联网发展中站错队 升级iOS 6还得看Google Maps 2012移动开发工具盘点:16大跨平台游戏引擎 GitHub Web游戏开发竞赛 获奖榜单出炉 Dart里程碑2发布 大幅提升dart2js性能 To Facebook:HTML5不好用?是你不会用! AWS推快照备份服务抵御宕机风险 靠谱吗? 微软品鉴会秀Windows 8电脑 上百款新设备年末上市 甩开外包,雄踞榜首:揭开“宫爆老奶奶”成功的秘密 IBM收购大数据公司StoredIQ 推动大数据传输能力 令人意外:前Windows部门总裁将去哈佛教书 舒迅:产品经理必读的九步法 独家爆料:Facebook移动客户端开发揭秘 一个独立开发者的自白:我如何在一年赚得60万美元 Dropbox收购Snapjoy 意欲打造媒体中心 2012世界“末日”:有经过正确的分析吗?! 23.5亿美元!谷歌出售摩托罗拉机顶盒业务 两家巨头相继放弃移动广告,移动广告形势堪忧? 应用洗牌,还能免费多久?Google推出iPad版Quickoffice 2012末日APP推荐 求生自救必备! Windows8上网利器 不卡死的IE10浏览器 为何Java程序员学习Clojure有优势? 我们是如何阅读代码的? “热水冷却”技术将主导美国国防部数据中心改造 程序员想玩转大数据:需要知晓的12种工具 2012年谷歌应用商店增长迅速 但苹果最赚钱 Apple微软Google都在竞购一家创业公司 违反新条款?苹果强行下架AppShopper install expression 打包问题 急急急 求教 一个框架结构的左右两边同时改变的问题 ★★ 高兴送分 ★★(zzwu) 请教高手 系统重装,SQL 6.5只剩下几个data目录下的dat文件,请问怎么才能把数据完全恢复? 客户端调试sql server存储过程 兄弟我想换工作,还企盼网友推荐(看在我对java版热心参与,请版主保留几天) 如何配置jConnect连接Sybase数据库?需要安装jdk吗? 如何在模块中编写一个函数,对数据库进行增,删,修改操作? a 请问各位DirectDraw是做什么的?最好能详细谈谈他的前景?谢谢! 我的win2000server在域中,被以域中Administrator进入,结果我的机子以域用户进入后,机子的系统关机选项变为不可用,以域中Administrato b/s应用程序怎样限制它只能安装在某一台电脑上? FORM中,如何通过 ODBC 访问 Foxpro的 dbf 数据文件(在线等待)? 如何判断连接服务器的sql数据库成功与否?在线等待高手解答! applet waiting online 程序员招聘(西安) 怎样让我的对话框程序实现全屏显示急急急1。。。 我的用法是否正确 有本事的就进来 JSP+JDBC环境中如何配置jConnect连接Sybase数据库?需要安装jdk吗? 急,高分求解Font问题 我编写了一个读写COOKIE的公用函数在我的工程中使用,老不通过,麻烦大哥们帮我诊断诊断 请问怎样获取托盘窗体的句柄??(给一百分) 请帮帮忙,如何调用dtswiz.dll 如何用BDE Administrator设置数据库别名(不用ODBC)访问Oracle数据库。高分相送! 对不起,我知道这个问题很简单,但是我一直没有搞出来,您能告诉我吗?datagrid中进行insert,delete,update操作? 寻求eVC用ADO操作cbd数据库的代码。 两个关于枚举类的问题 问用过struts的朋友一个问题,给100分! huffan交流系数表在C中如何表示?????? 线程问题~~~ 有哪位知道在 Windows 2000 下 锁定计算机时应用程序可以得到什么消息啊? 急!!关于数据的导入导出!! Cells不被VB支持吗? 获取字段类型 如何将DataGrid1中的数据打印出来, 如何使程序自动修改CEdit中的文字? 请问在.NET类库中有这样的类吗? 如何知道某个表格被锁 求助capboy等网络视频播放高手!!! 菜鸟问题:在VC中用ALTER TABLE指令需要什么头文件? 请高手帮忙,感觉难度很高 大家做GUI时有什么好用又免费的日期控件呢? 在javabean中用sql server2000的jdbc驱动连不起数据库! 添加图片到数据库中,奇怪现象! 如果我已经得到了一个DOM树, 我第一次运行HTML HELP时,new怎么会是无效的? 我的 程序在调用FORM.ACTION的用法不正确。能告诉我怎样用它 怎幺样实现一对主从表的数据库基本操作?用ADOQuery连接SQL2000. 有关统计打印的问题 棉花能加工成什么啊? 舟曲泥石流、5.12地震、玉树地震、还有一些地方的山洪,这意味着什么难道地球不行了吗,世界末日真的会不会到来 冲压弯头与热压弯头区别 关联词 三个的这些附加规则【 】任然有比较明确的标准和严格的限制,【 】从一定程度上来说,任然处在可以控制的范围内,【 】不可避免的带来了一些消极影响 K粉是什么?有什么成分?为什么能使人幻觉?求正解(带依据)吸食K粉对身体有何害?它究竟是什么?为什么它能让人产生幻觉?既然是软性毒品为什么禁不严? 在什么世纪,中国就发明了算盘这种计算工具 这三个关联词是表示什么的词? K粉的危害到底有多大?K粉为什么那么容易上瘾?K粉的成分是什么? 身边不少朋友为了体验K粉的感觉,都上瘾K粉的危害到底有多大?K粉为什么那么容易上瘾?K粉的成分是什么?身边不少朋友为了体 将少量浓溴水滴入苯酚溶液中,有白色沉淀.这句话对吗?`到底是什么原因啊? 三个词的关联词填空 由此可见,( )基础比别人差一些,( )肯下功夫,( )是照样可以成才的. 哪些药物会含有氧化镁的成分 用稀溴水滴入苯酚溶液中制备2,4,6-三溴苯酚 错在哪里? 三个关联词()有货物,咱们()拿他的货物,来顶大娘的包子!说着,有几个年轻人爬上车顶,掀开了毡布.可是,一个个全愣住了.他们谁也没有拿货物,()他们看清楚了,车上全装的是救灾的物资 去疼片类药物 都含有什么成分 三溴苯酚是沉淀,二溴苯酚是否会沉淀?一溴哪? 新旧棉花加工设备,除了棉花还能加工什么原材料么? 氯胺酮一般以盐酸盐形式存在,盐酸氯胺酮为( )结晶性粉末.( 酸碱盐中沉淀都有啥 啥颜色 啥状态 相关方程式如:Cu(OH)2为蓝色絮状沉淀 2NaOH+CuCO3=Na2CO3+Cu(OH)2 新旧棉花加工设备只能加工棉花被吗? 分析下列汉字 的音节结构“远,窄,伟,英,凉,日,郡,困,柳,谢. 谁能给我酸碱盐溶解性表的俗称,沉淀颜色望老师作答,常考的有哪几个,怎么考法 斜率越大?还是斜率的绝对值越大?这条线就越陡?斜率越小?还是斜率的绝对值越小?这条线就越平坦? 新旧棉花加工设备都有哪些? 为什么高炉炼铁的时候生铁出口低于炉渣出口? 在位置—时间图象中,图线斜率的绝对值表示什么? 旧棉花加工设备都有哪些设备?厂家在哪? 除了汉语还有什么语言是象形文字?哪些语言使用代码或字母 无差异曲线的斜率的绝对值是( )A.边际效用B.边际成本C.边际替代率D.都不对 地质灾害,山体塌方,泥石流.应该注意哪些事情? 英语翻译 为什么说无差异曲线的斜率的绝对值越大,边际替代率越大? 崩塌、山体滑坡和泥石流是一个意思吗? 我想找一些词语但是不知道去哪里找,像一些希腊,拉丁语这样的翻译成中文,比如,”乌托邦“就是希腊词根翻译过来的,类似这种词我去哪里找? 在x-t图中,图线斜率绝对值表速度大小,我想问什么是斜率绝对值,曲线的绝对值是什么?如图,这个绝对值是什么呢? 关联词是词吗?起什么作用?有哪两种词组成? 组成词语 大苏打怎么读,化学式是什么 地震和泥石流是怎样形成的 一段时间后清理沼气池为什么发生过沼气爆炸 金属是由金属阳离子和自由电子构成,是不是可以说金属是由离子构成的,而不是原子构成的? 在下列灾害中,哪一组不属于地质灾害?A.山体滑坡、泥石流 B.地震、火山爆发 C.强沙尘暴、土壤荒漠化在下列灾害中,哪一组不属于地质灾害?A.山体滑坡、泥石流B.地震、火山爆发C.强沙尘暴、 沼气池中能产生很多沼气,可是气体不能燃烧,为什么?原来产生的气体能燃烧,最近的气不能点燃.希望具体回答. 下列物质中属于天然高分子化合物的是A淀粉B葡萄糖C纤维素D乙酸 生殖细胞中,染色体和基因以什么方式存在 汉字与中国心的答案 如何证明物质由分子、原子、离子组成我是初三生,最好用生活中的事例来说明我们期末考就考到了这道题,我当然是错的了,但是现在还没有讲评,所以不知道要怎么说,想要知道大家的看法,从 性染色体既存在于生殖细胞中,也存在于体细胞中吗?位于性染色体上的致病基因,在体细胞中有等位基因吗? 求《汉字与中国心》的答案 以氧原子为例,说明构成物质的分子有哪几种?它们怎样构成原子? 一光滑的平面上,右方有一条形磁铁,一金属环以初速度v沿磁铁的 中线向右滚动,则以下说法正确的是( )A.环的速度越来越小 B.环保持匀速运动C.环运动的方向将逐渐偏向条形磁铁的N极D.环运 神府洗煤厂洗煤絮凝剂,洗煤聚丙烯酰胺,洗煤聚丙烯酰胺絮凝剂,洗煤专用絮凝剂,这个产品,在神府哪里有卖 性染色体的基因表达产物只存在于生殖细胞中,这句话有错么? 跪求一线性回归分析法种A和B到底是如何得出的,我看了别人的提问以及答案,但公式里面那个转了90度的M到底是什么意思,告诉我这个也行,我自己计算. 柳林洗煤絮凝剂哪里有卖的,就是洗煤聚丙烯酰胺 性染色体只存在于生殖细胞 这句话为什么错了 什么是岭回归分析法? 洗煤厂介质粉 柴油 仲辛醇 絮凝剂 通常用量,按吨原煤的量洗煤厂 介质粉 柴油 仲辛醇 絮凝剂 通常用量,按吨原煤的量.一般用量范围 棉花加工我想问一下,棉花从原料到加工为成品棉花,需要什么具体步骤,大概会损失多少,多少斤棉花原料能加工成一斤成品棉花, 浙江江西局地可能会有地质灾害说,是山洪是泥石流还是地震海啸呀? 厕所口全部盖住时间久了会产生沼气吗?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘