`
wbj0110
  • 浏览: 1602704 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Facebook VS Google

阅读更多

尽管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的差距。还有哪些企业利用开源获得了成功呢?请关注[企业开源系列]的后续报道。 

转自互联网

分享到:
评论

相关推荐

    Android代码-Facebook和Google集成登录

    Implementation of Facebook and Google login Easy way to implement custom login and sign up Setup 1. Include in your project Using Gradle The Android-Smart-Login library is pushed to jcenter, so you ...

    opencart社会化登录功能,支持Facebook和Google

    opencart Facebook登录和Google登录

    facebook、google和naver第三方登录

    js集成了谷歌,facebook、韩国naver登录,填入自己在相应后台申请的开发应用ID即可。

    Facebook和谷歌登陆插件ecshop2.7.zip

    对于Facebook和谷歌登录,你需要在各自的开发者平台上创建应用,获取API密钥和客户端ID等关键信息,然后在ECSHOP的插件设置中填入这些信息。 5. 最后,进行测试以确保插件正常工作,用户可以通过点击登录页面上的...

    著名网站架构设计(包括Facebook Google Amazon

    网站架构设计是构建高效、可扩展且可靠的在线服务的核心,对于Facebook、Google和Amazon这样的全球知名互联网巨头来说,他们的架构设计更是业界的典范。这些公司不仅处理着海量的数据,还要保证用户能快速、稳定地...

    预测facebook签到位置

    地理位置数据可以通过地图服务如Google Maps或OpenStreetMap进行可视化,帮助我们理解用户的行动轨迹和签到热点。热力图和聚类算法(如DBSCAN或K-means)可以用于识别高频率签到区域,进一步探索用户的活动模式。 ...

    Laravel开发-laravel-facebook-auth-passport

    Laravel开发-laravel-facebook-auth-passport Facebook授权请求授予Laravel Passport-从Danjdewhurst/Laravel Passport Facebook登录进行修改

    Swift-Simplicity-在iOS应用中实现Facebook和Google登录的简单方法

    在iOS应用开发中,集成第三方登录服务如Facebook和Google已经成为用户友好的常见功能。Swift作为Apple的首选编程语言,提供了简单而强大的API来处理这些任务。本文将详细讲解如何使用Swift在iOS应用中轻松实现...

    Facebook基础培训.pptx

    首先,Facebook作为一个全球性的社交媒体平台,其用户基数庞大,覆盖超过150个国家和地区,拥有超过12亿的活跃用户,超越了Google等其他知名网站,成为全球访问量最大的网站。Facebook的用户粘性非常高,每天有超过...

    magento facebook快捷登陆插件

    在Magento中,插件会引导用户跳转到Facebook授权页面,用户同意后,Facebook会返回一个访问令牌,允许Magento应用代表用户与Facebook API交互。 2. **Facebook开发者帐户**:首先,你需要在Facebook开发者平台上...

    Android平台下Facebook,Google service, 新浪微博接入第三方应用SSO授权教程

    对于Android开发者来说,集成Facebook、Google服务和新浪微博的SSO授权需要遵循特定的步骤和使用相应的SDK。以下是详细的过程: **1. 新浪微博接入流程:** 首先,你需要从官方GitHub仓库...

    facebook 评论数据 语料 google play 爬虫抓取

    爬虫抓取2016.3-2016.4 google play上facebook的英文评论(有少部分西语没有处理)共计10W条

    facebook源代码框架

    在Facebook的源代码中,我们还可以学习到如何处理数据持久化,可能是使用SQLite数据库或Google的Firebase Realtime Database。此外,网络通信方面,Facebook可能使用了自家的Fresco库进行图片加载和缓存管理,以及...

    facebook的架构(PDF)

    1. **分布式存储**:Facebook使用了多种分布式存储系统,如Haystack(用于存储用户上传的照片)、Cassandra(用于存储非结构化数据)和Bigtable(谷歌开源的一种分布式键值存储系统)。这些系统能够处理大规模数据,...

    Facebook效应

    - **与Twitter和Google的竞争**:随着社交媒体市场的竞争加剧,Facebook不得不面对来自Twitter和Google的强大挑战。特别是与Google的竞争,成为了社交媒体领域的标志性事件之一。 #### 四、商业模式与未来愿景 - *...

    Facebook开放平台

    - **测试和发布**:完成开发后,进行充分的测试确保一切正常运行,然后将应用提交到Google Play商店。 #### 四、案例研究 假设我们正在开发一款名为“TravelBuddy”的旅游社交应用,该应用的目标是连接志同道合的...

    谷歌+1不是facebook对手的五个原因.docx

    标题“谷歌+1不是Facebook对手的五个原因”探讨了谷歌的社交尝试Google+1在与Facebook竞争中可能失败的几点理由。以下是对这些原因的详细分析: 1、**可用性**: 谷歌+1的可用性问题在于用户如何适应并理解其功能。...

    Google+ Pages功能匮乏 不及Facebook企业版.docx

    标题中的“Google+ Pages功能匮乏 不及Facebook企业版”指的是谷歌的社交平台Google+推出的Pages功能在与Facebook的企业版服务对比下,表现出的功能不足。这篇文档的描述进一步强调了Google+ Pages在推出后因缺少...

    Facebook广告sdk需要用到的v4的jar包

    `android-support-v4.jar`是Google为了兼容早期Android版本而开发的,它包含了大量对Android API Level 4及以上版本的支持类。这个库的主要目标是使开发者能够使用一些在低版本Android系统中不可用的新特性,同时也...

Global site tag (gtag.js) - Google Analytics