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

Facebook’s architecture(转)

阅读更多
From various readings and conversations I had, my understanding of Facebook’s current architecture is:

* Web front-end written in PHP. Facebook’s HipHop [1] then converts it to C++ and compiles it using g++, thus providing a high performance templating and Web logic execution layer
* Business logic is exposed as services using Thrift [2]. Some of these services are implemented in PHP, C++ or Java depending on service requirements (some other languages are probably used…)
* Services implemented in Java don’t use any usual enterprise application server but rather use Facebook’s custom application server. At first this can look as wheel reinvented but as these services are exposed and consumed only (or mostly) using Thrift, the overhead of Tomcat, or even Jetty was probably too high with no significant added value for their need.
* Persistence is done using MySQL, Memcached [3], Facebook’s Cassandra [4], Hadoop’s HBase [5]. Memcached is used as a cache for MySQL as well as a general purpose cache. Facebook engineers admit that their use of Cassandra is currently decreasing as they now prefer HBase for its simpler consistency model and its MapReduce ability.
* Offline processing is done using Hadoop and Hive
* Data such as logging, clicks and feeds transit using Scribe [6] and are aggregating and stored in HDFS using Scribe-HDFS [7], thus allowing extended analysis using MapReduce
* BigPipe [8] is their custom technology to accelerate page rendering using a pipelining logic
* Varnish Cache [9] is used for HTTP proxying. They’ve prefered it for its high performance and efficiency [10].
* The storage of the billions of photos posted by the users is handled by Haystack, an ad-hoc storage solution developed by Facebook which brings low level optimizations and append-only writes [11].
* Facebook Messages is using its own architecture which is notably based on infrastructure sharding and dynamic cluster management. Business logic and persistence is encapsulated in so-called ‘Cell’. Each Cell handles a part of users ; new Cells can be added as popularity grows [12]. Persistence is achieved using HBase [13].
* Facebook Messages’ search engine is built with an inverted index stored in HBase [14]
* Facebook Search Engine’s implementation details are unknown as far as I know
* The typeahead search uses a custom storage and retrieval logic [15]
* Chat is based on an Epoll server developed in Erlang and accessed using Thrift [16]

About the resources provisioned for each of these components, some information and numbers are known:

* Facebook is estimated to own more than 60,000 servers [17]. Their recent datacenter in Prineville, Oregon is based on entirely self-designed hardware [18] that was recently unveiled as Open Compute Project [19].
* 300 TB of data is stored in Memcached processes [20]
* Their Hadoop and Hive cluster is made of 3000 servers with 8 cores, 32 GB RAM, 12 TB disks that is a total of 24k cores, 96 TB RAM and 36 PB disks [20]
* 100 billion hits per day, 50 billion photos, 3 trillion objects cached, 130 TB of logs per day as of july 2010 [21]

[1] HipHop for PHP: http://developers.facebook.com/blog/post/358
[2] Thrift: http://thrift.apache.org/
[3] Memcached: http://memcached.org/
[4] Cassandra: http://cassandra.apache.org/
[5] HBase: http://hbase.apache.org/
[6] Scribe: https://github.com/facebook/scribe
[7] Scribe-HDFS: http://hadoopblog.blogspot.com/2009/06/hdfs-scribe-integration.html
[8] BigPipe: http://www.facebook.com/notes/facebook-engineering/bigpipe-pipelining-web-pages-for-high-performance/389414033919
[9] Varnish Cache: http://www.varnish-cache.org/
[10] Facebook goes for Varnish: http://www.varnish-software.com/customers/facebook
[11] Needle in a haystack: efficient storage of billions of photos: http://www.facebook.com/note.php?note_id=76191543919
[12] Scaling the Messages Application Back End: http://www.facebook.com/note.php?note_id=10150148835363920
[13] The Underlying Technology of Messages: https://www.facebook.com/note.php?note_id=454991608919
[14] The Underlying Technology of Messages Tech Talk: http://www.facebook.com/video/video.php?v=690851516105
[15] Facebook’s typeahead search architecture: http://www.facebook.com/video/video.php?v=432864835468
[16] Facebook Chat: http://www.facebook.com/note.php?note_id=14218138919
[17] Who has the most Web Servers?: http://www.datacenterknowledge.com/archives/2009/05/14/whos-got-the-most-web-servers/
[18] Building Efficient Data Centers with the Open Compute Project: http://www.facebook.com/note.php?note_id=10150144039563920
[19] Open Compute Project: http://opencompute.org/
[20] Facebook’s architecture presentation at Devoxx 2010: http://www.devoxx.com
[21] Scaling Facebook to 500 millions users and beyond: http://www.facebook.com/note.php?note_id=409881258919
分享到:
评论

相关推荐

    Presto_SQL_on_Everything.pdf

    We then describe its architecture and implementation, and call out features and performance optimizations that enable it to support these use cases. Finally, we present performance results that ...

    React and React Native [Kindle Edition]

    Use Facebook's Relay, React and GraphQL technologies, to create a unified architecture that powers both web and native applications Book Description React and React Native allow you to build cross-...

    WordPress 3 Search Engine Optimization.pdf

    Automating Facebook updates with FacePress II 215 Going viral with the Share on Facebook plugin (and several others) 217 Automating twitter posts with Tweet This 218 Promoting your business or blog...

    Mastering React Native

    You'll get an overview of Facebook's Flux data architecture and then apply Redux to manage data with a remote API. You will also learn to animate different parts of your application, as well as ...

    Introduction.to.React.1484212460

    Introduction to React teaches you React, the JavaScript framework created by developers at Facebook, to solve the problem of building complex user interfaces in a consistent and maintainable way....

    Silverlight 4: Problem - Design - Solution

    Explains system linking and data flow, end user interface, system architecture based on Silverlight 4 and .NET 4, and more Includes coverage on integrating social networking and Facebook With this ...

    React Native By Example

    You will also link up with the third-party Facebook SDK, convert an app to support the Redux architecture, and learn the process involved in making your apps available for sale on the iOS App Store ...

    Mastering React Native 2017年出版496页

    You'll get an overview of Facebook's Flux data architecture and then apply Redux to manage data with a remote API. You will also learn to animate different parts of your application, as well as ...

    Modern PHP中文版

    and profiling your PHP applications, - Explore Facebook’s HVVM and Hack language implementations—and how they affect modern PHP, - Build a local development environment that closely matches your ...

    modern php

    and profiling your PHP applications, - Explore Facebook’s HVVM and Hack language implementations—and how they affect modern PHP, - Build a local development environment that closely matches your ...

    React and React Native

    Use React and React Native to build applications for desktop browsers...Use Facebook's Relay, React and GraphQL technologies, to create a unified architecture that powers both web and native applications

    Silverlight 4 Problem - Design - Solution.pdf

    Explains system linking and data flow, end user interface, system architecture based on Silverlight 4 and .NET 4, and more Includes coverage on integrating social networking and Facebook With this ...

    Modern.PHP.New.Features.and.Good.Practices

    Explore Facebook’s HVVM and Hack language implementations—and how they affect modern PHP Build a local development environment that closely matches your production server Table of Contents Part I. ...

    Machine Learners Archaeology of a Data Practice pdf

    Mackenzie's account of machine learning locates places in which a sense of agency can take root. His archaeology of the operational formation of machine learning does not unearth the footprint of a ...

    Mastering.Xamarin.UI.Development.1786462001.epub

    Understand and use the MVVM pattern architecture to navigate between each of your ViewModels and implement Data Binding to display and update information Work with the Microsoft Azure Platform to ...

    react.js essentials

    With the latest push from Facebook, React.js has proven itself to be a solid choice to build maintainable and performant user interfaces that help our clients ship products and move fast. I was ...

    游戏编程精粹8--随书光盘源代码(part1/2)

    5.2 Social Networks in Games: Playing with Your Facebook Friends 498 5.3 Asynchronous I/O for Scalable Game Servers 506 5.4 Introduction to 3D Streaming Technology in Massively Multiplayer Online ...

    游戏编程精粹8--随书光盘源代码(part2/2)

    5.2 Social Networks in Games: Playing with Your Facebook Friends 498 5.3 Asynchronous I/O for Scalable Game Servers 506 5.4 Introduction to 3D Streaming Technology in Massively Multiplayer Online ...

Global site tag (gtag.js) - Google Analytics