Facebook技术架构

来源:互联网 发布:php closure类 编辑:程序博客网 时间:2024/04/28 00:21

Facebook

MySQL,Multifeed (a custom distributed system which takes the tens of thousands of updates from friends and picks the most relevant), Thrift, Memcached,Operations

 

Much of Facebook’s interactive features are powered by AJAX,

Horizontal scalability enabled via load balancing (to pick a web server to handle the request, other purposes: to protect DoD)

to separate “write” databases from “read” to enhance the scalability of its application architecture:“Page Routing” but most of us in the industry call “Layer 7 Switching” or “Application Switching

Modern applications must be deployed and delivered collaboratively with infrastructure if they are to scale and support growth in an operationally and financially efficient manner.

Facebook message:

Layered

Service/API Driven

Distributed

Separate Application Logic

Stateless (State is kept in a database ties, caching tier or other services)

Scalable Component Services

Full Stack Ops(all kinds of tools)

Celled (A cell consists ofZooKeeper controllers, an application server cluster, and ametadata store. ) ZooKeeper. ZooKeeper is used for high availability, sharding, failover, and services discovery.

 

Real-time analytics System

HBase - 20 Billion Events/Day

Hbase + Scribe + Ptail + Puma

php(frontend) + java(backend)

Thrift

Software: http://royal.pingdom.com/2010/06/18/the-software-behind-facebook/

PHP+Linux+MySQL(primarily as a key-value persistent storage)

Haystack, a highly scalable object store used to serve Facebook’s immense amount of photos, or Scribe, a logging system that can operate at the scale of Facebook

Memcached between web servers and MySQL

HipHop converted PHP into C++ Code

Haystack is Facebook’s high-performance photo storage/retrieval system (strictly speaking, Haystack is an object store

BigPipe is a dynamic web page serving system that Facebook has developed.

Facebook uses Cassandra for its Inbox search

Scribe is a flexible logging system that Facebook uses for a multitude of purposes internally.

Facebook uses Hadoop & Hive for data analysis

Thrift is an internally developed cross-language framework that ties all of these different languages (PHP, Erlang, Java and C++) together, making it possible for them to talk to each other.

Varnish is an HTTP accelerator which can act as a load balancer and also cache content which can then be served lightning-fast.

Gradual releases and dark launches

XHProf->Profiling

like many other big sites, Facebook uses a CDN to help serve static content

You can get the code right, you can get the products right, but you need to get the culture right first. If you don't get the culture right then your company won't scale.

Overall architecture has 4 main components: Load Balancer, Web Servers (written in PHP), Services (fast, complicated, search, ad, scribe), Memcached (fast, simple), Databases (slow, persistent).

 

There are no product owners at Facebook

http://highscalability.com/blog/2010/6/10/the-four-meta-secrets-of-scaling-at-facebook.html

http://www.infoq.com/presentations/Scale-at-Facebook

参考:http://www.infoq.com/presentations/Facebook-Software-Stack