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

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

人民日报:2013关于新媒体的8个猜想 互联网大时代成就创新小企业 移动互联网创新论坛报道 Mobile Detect:判断移动设备类型的开源PHP类 我是如何Hack Facebook Employees Secure Files Transfer服务的 投资可再生能源:Google 2亿美元投资风力农场 构筑商业生态系统 阿里巴巴集团全面变革组织架构和管理体系 美国众多银行网站遭DDoS攻击 疑似伊朗所为 构建高可扩Web架构和分布式系统实战 CES2013 AMD发布移动处理器路线图和环绕计算概念 对话Linus Torvalds:大多黑客甚至连指针都未理解 PaaS玩家们,怎么演好自己的角色? Apple高管表态:低端机绝不是iPhone的未来 Web开发人员应该知道的IE 10兼容性问题 一周消息树:CES2013揭幕 科技巨头纷纷发力 2012专利排行榜 IBM位列第一、Google增长最快! 微软赞黑客并称Windows RT越狱非安全漏洞所致 周报第46期:GitHub历史上最糟糕宕机事故回放及反省 著名计算机黑客Aaron Swartz自杀身亡 移动周报:移动互联网行业技术趋势前瞻 旁门左道:让移动游戏下载量暴涨的邪门功夫 可植入身体:“可穿戴计算”时代来临 Web服务器份额:Apache仍居首,Nginx将超IIS 防税务欺诈:挪威财政部将开源收银机代码 响应式设计实战:3人+1.5个月 IE10优化版cnBeta诞生记 不听乔布斯劝告:“不专心”的Google照样干得好 躲过一劫!苹果不锁杂志类APP介绍截图 Oracle发布软件更新修复Java漏洞 设计师将吞噬工程师吗? 开源产品系列:小巧灵活的Web框架web.py Windows Server 2012 VHDX格式揭秘 Rovio将赶超Zynga 成为全球最受欢迎游戏公司 能提供解码器么? 在tdi中,怎样获取封包ip头? 神啊!救救我吧!!!!(在线等待) 我看SARS危机 求助 我该怎么办??? 管理登陆问题解决?? 一个简单的问题,如何对字符串进行减操作? 谁用过struts,进来交流一下! 请大侠看看俺的小程序,哪里错了(关于不规则图形填充) delphi查询问题(急需) 急求:从硬盘安装windowsxp时电脑出显不能安装,找不到eula!如何解决? 系统分析员VS博士 C#连接Oracle? 关于<BASE> 那里有WebDB下载啊. 在ListCtrl里加类似Combo Box的东西,能实现吗? windows2000下vb的一个小问题~~ 如何把当前路径加入查找路径中?立即给分! 对选用不同的纸张大小,在预览中能看出效果吗? 请问怎么在PB6.0中实现Foxpro(*.dbf)的数据导入,到ASA库中 j2me里怎么才能实现图象的滤镜效果?waiting... CDbSet m_dbSet(NULL)在哪一步才能得到一个CDatabase对象的错针? 新手提问:“镜象”是什么意思 求教,如何配置使性能达到最佳,详情见文 怎样在广域网中提高传屏响应速度?帮帮忙!急啊. 在文件钩子当中如何判断是打开文件操作,还是创建文件操作 怎样在applet程序中显示一幅jpeg图片?该图片存在于c:\image\下。 去年12月是谁发的帖子“做项目经理难么” 关于图层拖拽的问题 我有一块硬盘,迈托4.3G,开格式化分时说错误设备或0磁道损坏,后来fdisk分区,启动无效 这是个什么错误啊~ 第一次做控件不明白 给点指点啊 急求:从硬盘安装windowsxp时电脑出显不能安装,找不到eula!如何解决? 不用的控件怎样从工程中删除? 怎样将一个表中的全部数据追加到别一个表的后面????在线 我做软件这些年 求scjd的模拟题 为什么我连续给一个socket send三次,socket一次就接收完了? 关于HTML代码不区分大小写? 大家看一下这个CListCtrl是啥回事?? Turbo c++3.0怎么使用? 《水园MSN俱乐部宗旨》 ODBC连接数据库的一个问题求教 如何让网页一打开就是全屏模式? 关于打印的问题 怎么彻底卸载linux啊!放分100 如何移动无模式窗体? 一个网络版软件的共享使用问题 在线等待!!! 一个网络版软件的共享使用问题 98怎么与xp不能连网玩游戏?高分送!! 做实验时虹吸管提前发生虹吸现象该怎么办? 产业组织结构、产业间及产业内部结构个指的是什么?有什么区别? 为什么说常温常压下,8克氧气含有4NA个电子?8克氧气在标况下才是0.25摩尔啊,怎么在常温常压下也是0.25摩尔?常温常压和标况不是不同的吗, 如何在墙上写字(打广告)?毛笔,墨水不行写一下蘸一下太麻烦,请给点建议吧 甲类低频放大器,其晶体管集电极接扬声器,发射极直接接地,基极只接一个负载电阻,那么这个负载电阻怎么确定?(三极管型号是3AX系列的) 为什么存在万有引力呢? 得了芥子怎么办 组织机构和组织结构的区别 万有引力存在?假设在一绝对真空中,有两静止物体,根据万有引力定律,两物体会受到相互作用力,从而产生加速度,最后碰撞,能量是不会凭空产生,但为什么凭空产生加速度,产生能量? 如何看到紫外线 组织结构与组织战略的区别 从21千克棉籽中能榨出5.1千克油.照这样计算,7千克棉籽能榨出多少千克油?如果要榨出12.75千克油需要棉籽多少千克?判断下面的量成什么比例?(1)电费的单价一定,用电量和电费总价.( )(2 电磁炉维修串联60瓦灯泡后开机检锅正常,放上锅后灯泡猛亮一下熄灭,便自动关机,重复上述还是一样曾经换过一次IGBT,重新更换了LM339,及驱动管S8550 S8050 有18V 5V 285V电压,各大电容也换过了,还 让秋千永远的不停地荡 需满足什么条件是关于物理的能量守恒定律 一种棉籽,每千克出油20分之7千克,200千克棉籽可出油多少千克? 混合物质中怎样萃取我们所需要的部分? 一道化学试剂鉴别的题!下列各物质的无色溶液,不用其它试剂即可鉴别的是!1 KOH Na2SO4 AlCl32 NaHCO3 Ba(OH) H2SO43 HCl NaAlO2 NaHSO44 Ca(OH) NaCO3 BaCl2A.12 B23 C134 D1241 KOH Na2SO4 AlCl32 NaHCO3 Ba(OH) H2SO43 HCl NaAlO2 NaH 司南为什么要做成勺子形? PH试纸上滴入NAcl,试纸变什么颜色 水解反应的方程式如何去写我就是不会写那个关于水解的方程式就是不会分析生成什么,而且反应后生成什么!(显酸星还是碱性) 谁了解干气密封和机械密封,我对此一点不懂,希望能得到详细的解说. 3/8"NPT FEMALE-FEMALE PIPE COUPING. HOCH2CH2NHCOCH2CH3的水解反应方程 万有引力为何存在? 四氟化四硼的空间构型 长期在高温条件下工作的钢材,会产生哪些组织劣化? 为什么存在万有引力? 判断四氟化硫(SF4)的分子空间构型?用VSEPR法判断四氟化硫(SF4)的分子空间构型时,LP不等于0,孤对电子位置有两种情况,用斥力最小原理怎么确定 中国木材产量是世界最多的吗? 请问风能电动车的风能发电机功率是多大,给蓄电池的充电需要经过那些程序原理是什么请问风能电动车的发电机功率是多少,充电的原理是什么需要经过那些程序 灯泡L1“3v,3w”灯泡L2“3v,6w”并联在1.5v电源上,那个灯泡亮 电磁炉保险丝处接假负载(灯泡)开机,加热盘怎么弄 运输衣服400箱每箱运费30元,若损失一箱不但不给运费还陪100元,运完后总运费是8800元,问损失几箱 灯泡给名牌比较哪个更亮这种题怎么算 L1“6v 6w” L2“3V 3W”并联在某电源上 哪个灯更亮,实际功率之比 在三角形中,已知sinA+sinC=psinB,p属于R且ac=1/4b方 若角B为锐角,p的范围 发电机组是以柴油为动能好还是以汽油为动能好? 试药有危险吗? 为什么光学显微镜的目镜通常都是15×? 电站内部可安装柴油发电机组,严禁使用汽油发电机组,这是为何? dna羟基末端怎么念,3’端念什么?5‘端念什么? 地球对光是否存在万有引力? 新买回来的棉质被单、被罩,味道特别重,是什么缘故?对人体有什么危害吗?如何去除?看了你回答蚊帐的题目,是用同样的方法吗? 现在北京还有试药的吗? 电磁炉为什么是在保险串联灯泡在线盘并联灯泡还可以理解,但大家说在保险串联灯泡就不懂了,是代替保险还是串在电路里?我还是个学徒, 急.尼古丁能与什么气体产生化学反应? DNA羟基端是哪个,我怎么觉得是B在遗传病及刑侦破案中常需要对样品DNA进行分析,PCR技术能快速扩增DNA片段,在几个小时内复制出上百万份的DNA拷贝,有效地解决了因为样品中DNA含量太低而难以 电磁炉保险处串联1个灯泡,通电后 灯泡暗红 开机 灯泡稍微亮点 但不闪烁 油脂和尼古丁能反应吗 DNA或RNA中的磷酸含有几个羟基,为什么? 电磁炉一加热烧保险丝怎么修灯泡怎么带 新买了一套被套,有很重的化学印染味道,不知道是不是二氧化硫和硫化氢,洗了几次还是有,新买了一套被套,上面有很重的化学味道,可能是印染的残留,不知道是不是二氧化硫和硫化氢,洗了几 这句话怎么理解,3'端不就是DNA的头吗,(含有羟基) 对于十字相乘法练习题系数不为一的题,如何一眼就看出分解成那两个数如6x²-x-1=(2x-1)(3x+1) 就知道分解成2和3,简略点, 尼古丁和乙醇会发生什么化学反应 端羟基聚丁二烯的红外谱图及其分析? 8g氧气所含电子数为多少摩尔错了,是多少个..lb牛人的答案很好,修改一下就能采用了 尼古丁有什么反应 Zn经过化学变化得到ZnSO4是得电子还是失电子 共发射极放大器中,集电极电阻的作用是什么 常温常压下,3.5gCl2所含电子数?常温常压下,3.5gCl2所含电子数如何计算? 李雪主成为朝第一夫人 传因长得像金正监听丑闻引盟友提高“炮轰” 美国公信突尼斯举办中国电影节温州经济三季报让人眼前一亮 GDP同白宫拒回答是否曾监听默克尔 美德信任朝韩在非军事方面保持合作 朝鲜遣返6供应杭城70%生鲜猪肉 滨江区昨再查冷空气吹开雾霾带来降温 这两天早晨只朝鲜表态强化核力量 美韩揣测朝“核冒国考报名昨天截止 浙江最热门职位33日本媒体爆料杭州绿城主帅冈田武史将离临安破获特大涉毒涉枪案 缴获整枪43温州:成绩将非评价学校教育质量唯一标最高院公开失信者名单 查谁是老赖浙江院士揭露伪大师治病行骗:治疗效果系心商合杭高铁拿到准生证 安吉将结束不通杭州地铁3号线为啥比原先的规划短了十已婚男连续胸袭女同事遭解雇 自称“没国考报名结束平均70人争1个岗位 湖美国情报机构被爆监听35名国际政要电杭州推新能源交通 新能源车:年底再推政府购买服务应满足公众实际需求严查车辆方便群众不可偏废种子法修订或将凸显简政放权企业自主审京城动物地名多怎样不得罪造型师?海南:交通违法信息“微”查询为全面深化改革提供坚强保证“给年轻人点时间,让译制片慢慢来”辽宁基层法院司法公信显升东方讲坛·“以案说防范,共建平安城”马年楼市吹啥风?分类调控风!一句话新闻改革:浦东“命根子”“最大特质”好路修成烂路 惠民变成扰民广州前两月卖地超224亿涵盖百姓生活新需求法律援助应与时俱进市民需求与公共利益孰重孰轻货车与电动车相撞一女重伤禅城优惠促销从禅西蔓延至季华六路南海科学管理科研经费猫头鹰沙发,躺卧装饰两相宜
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘