后起之秀Facebook凭什么挑战互联网霸主Google?_最新动态_新闻资讯_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 新闻资讯 > 最新动态 > 后起之秀Facebook凭什么挑战互联网霸主Google?

后起之秀Facebook凭什么挑战互联网霸主Google?

 2013/8/20 22:48:46    程序员俱乐部  我要评论(0)
  • 摘要:尽管Google极其推崇开源,并推出大量的开源项目,但是从根本上来看,Google的开源力度、开放程度远远比不上Facebook。这也是为什么Facebook能够在短短的几年间,一跃成为全球最大的社交网站的原因之一。本文就来看看Facebook背后的开源力量。一、Facebookvs.GoogleFacebook从2004年创始以来,已经从一个哈佛大学校内网站一跃发展成为了全球最大的社交网站。目前,Facebook的用户数量已经突破10亿,全球平均每天有7亿用户在使用其服务
  • 标签:Facebook 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

  这是一个cangku.html" target="_blank">数据仓库基础设施,构建于 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 的差距。还有哪些企业利用开源获得了成功呢?请关注[企业开源系列]的后续报道。

发表评论
用户名: 匿名