久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

FaceBook網(wǎng)站架構(gòu)軟件揭秘

 Colin收藏 2012-08-30
FaceBook網(wǎng)站架構(gòu)軟件揭秘

20106月,,Google公布全球Top 1000網(wǎng)站,。Facebook獨占鰲頭。

Facebook現(xiàn)在的經(jīng)營規(guī)模,,諸多傳統(tǒng)服務(wù)器的技術(shù)均將崩潰或根本無法支撐,。那么面對5億的活躍用戶,Facebook的工程師們又將如何讓網(wǎng)站平 穩(wěn)運轉(zhuǎn)呢?伯樂在線職場博客的這篇文章將展示Facebook的工程師完成這個艱巨任務(wù)所用到的一系列軟件,。

Facebook級別規(guī)模的挑戰(zhàn)

在我們深入細節(jié)之前,,先了解一組Facebook不得不面對數(shù)據(jù),你就可以想象這種規(guī)模,。

· Facebook每月的PV量:630,000,000,000 63百億)

· Facebook上的圖片數(shù)量超過其他圖片網(wǎng)站的總和(包括諸如Flickr這樣的圖片網(wǎng)站)

· 每個月有超過30億的圖片上傳到Facebook

· Facebook系統(tǒng)每秒可以處理120萬張圖片,。這還不包括FacebookCDN處理的圖片。

· 每月處理超過250億的信息內(nèi)容(包括用戶狀態(tài)更新,,評論等)

· Facebook的服務(wù)器數(shù)量超過3萬臺(此數(shù)據(jù)為2009年的數(shù)據(jù))

Facebook所用的軟件

從某些方面來說,,Facebook還是屬于LAMP類型網(wǎng)站,但是,,為了配合其他大量的組件和服務(wù),,Facebook對已有的方法,已經(jīng)做了必要的改變,、拓展和修改,。

比如:

· Facebook依然使用PHP,但Facebook已重建新的編譯器,,以滿足在其Web服務(wù)器上加載本地代碼,,從而提升性能;

· Facebook使用Linux系統(tǒng),,但為了自身目的,,也已做了必要的優(yōu)化。(尤其是在網(wǎng)絡(luò)吞吐量方面),;

· Facebook使用MySQL,,但也對其做優(yōu)化。

還有定制的系統(tǒng),,比如,, Haystack — 高度可擴展的對象存儲,用來處理Facebook的龐大的圖片,;Scribe — Facebook的日志系統(tǒng),。

下面展現(xiàn)給大家的是,全球最大的社交網(wǎng)站Facebook所使用到的軟件,。


Memcached

Memcached是一款相當有名的軟件,。它是分布式內(nèi)存緩存系統(tǒng)。Facebook(還有大量的網(wǎng)站)用它作為Web服務(wù)器和MySQL服務(wù)器之間的緩存層,。經(jīng)過多年,,Facebook已在Memcached和其相關(guān)軟件(比如,網(wǎng)絡(luò)棧)上做了大量優(yōu)化工作,。

Facebook運行著成千上萬的Memcached服務(wù)器,,借以及時處理TB級的緩存數(shù)據(jù),。可以這樣說,,Facebook擁有全球最大的Memcached設(shè)備,。

HipHop for PHP

和運行在本地服務(wù)器上代碼相比,PHP的運行速度相對較慢,。HipHopPHP代碼轉(zhuǎn)換成C++代碼,,提高編譯時的性能。因為Facebook很依賴PHP來處理信息,,有了HipHop,,FacebookWeb服務(wù)器方面更是如虎添翼。

HipHop誕生過程:在Facebook,,一小組工程師(最初是3位)用了18個月研發(fā)而成,。

Haystack

HaystackFacebook高性能的圖片存儲/檢索系統(tǒng)。(嚴格來說,,Haystack是一對象存儲,,所以它不一定要存儲圖 片。)Haystack的工作量超大,。Facebook上有超過2百億張圖片,,每張圖片以四種不同分辨率保存,所以,,Facebook有超過8百億張圖 片,。

Haystack的作用不單是處理大量的圖片,它的性能才是亮點,。我們在前面已提到,,Facebook每秒大概處理120萬張圖片,這個數(shù)據(jù)并不包括其CDN處理的圖片數(shù),。這可是個驚人的數(shù)據(jù)?。?!

BigPipe

BigPipeFacebook開發(fā)的動態(tài)網(wǎng)頁處理系統(tǒng)。為了達到最優(yōu),,Facebook用它來處理每個網(wǎng)頁的分塊(也稱“Pagelets”),。

比如,聊天窗口是獨立檢索的,,新聞源也是獨立檢索的,。這些Pagelets是可以并發(fā)檢索,性能也隨之提高,。如此,,即使網(wǎng)站的某部分停用或崩潰后,,用戶依然可以使用。

Cassandra

Cassandra是一個沒有單點故障的分布式存儲系統(tǒng),。它是前NoSQL運動的成員之一,,現(xiàn)已開源(已加入Apache工程)。Facebook用它來做郵箱搜索,。

除了Facebook之外,,Cassandra也適用于很多其他服務(wù),比如Digg,。

Scribe

Scribe是個靈活多變的日志系統(tǒng),,Facebook把它用于多種內(nèi)部用途。Scribe用途:處理Facebook級別日志,,一旦有新的日志分類生成,,Scribe將自動處理。(Facebook有上百個日志分類),。

Hadoop and Hive

Hadoop是款開源Map/Reduce框架,,它可以輕松處理海量數(shù)據(jù)。Facebook用它來做數(shù)據(jù)分析,。(前面就說到了,,Facebook的數(shù)據(jù)量 是超海量的。)Hive起源于Facebook,,Hive可以使用SQL查詢,,讓非程序員比較容易使用Hadoop。(注1: Hive是是基于Hadoop的一個數(shù)據(jù)倉庫工具,,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,,并提供完整的sql查詢功能,可以將sql語句轉(zhuǎn)換為 MapReduce任務(wù)進行運行,。

Thrift

Facebook在其不同的服務(wù)中,,使用了不同的語言。比如: PHP用在前端,,Erlang用于聊天系統(tǒng),,JavaC++用于其它地方,等等,。Thrift是內(nèi)部開發(fā)的跨語言的框架,,把不同的語言綁定在一起,使之 可以相互交流,。這就讓Facebook的跨語言開發(fā),,變得比較輕松。

Facebook已把Thrift開源,,Thrift支持的語言種類將更多,。

Varnish

Varnish是一個HTTP加速器,,擔當負載均衡角色,同時也用于快速處理緩存內(nèi)容,。

FacebookVarnish處理圖片和用戶照片,,每天都要處理十億級的請求。和Facebook其他的應(yīng)用應(yīng)用一樣,,Varnish也是開源的,。

Facebook可以平穩(wěn)運行,還得利于其他方面

雖然上面已經(jīng)提到了一些構(gòu)成Facebook系統(tǒng)的軟件,,但是處理如此龐大的系統(tǒng),,本身就是一項復(fù)雜的任務(wù)。所以,,下面還將列出使Facebook能平穩(wěn)運行的一些東西,。

逐步發(fā)布&暗啟動

Facebook有一個系統(tǒng),他們稱之為門衛(wèi),。該系統(tǒng)可以針對不同種類的用戶運行不同的代碼,。(它簡單介紹了代碼庫中的不同條件。)該系統(tǒng)讓Facebook逐步發(fā)布新特性,、A/B測試,、激活僅針對Facebook員工的特性 等等。

門衛(wèi)系統(tǒng)也讓Facebook做些暗啟動的事情,。比如,,在某一特性上線之前,可以激活該特性背后的元件,。另外,,它還可以做模擬壓力測試,發(fā)現(xiàn)瓶頸和潛在的問題,。默默啟動一般都是在正式啟動之前的2周完成,。

實時系統(tǒng)的簡介

Facebook會仔細監(jiān)控自身系統(tǒng),有趣的是,,它還監(jiān)控每個PHP函數(shù)在實時生產(chǎn)環(huán)境下的性能,。這一實時PHP環(huán)境監(jiān)控是通過一個叫XHProf的開源工具完成的。

逐步禁用某些特性,,借以提高性能

如果Facebook遇到性能問題,,Facebook有大量的途徑來逐步禁用不很重要的特性,以提高其核心特性性能,。

尚未提到的東西

雖然這里無法過多深入硬件方面,但硬件絕對是Facebook能達到空前規(guī)模的重要因素,。比如,,和其他大型網(wǎng)站一樣,,Facebook也用CDN來處理靜態(tài)內(nèi)容。Facebook還在美國西部的俄勒岡州建有一超大的數(shù)據(jù)中心,,可以隨時增加服務(wù)器,。

當然了,除了前面已經(jīng)提到的,,還有其他大量的軟件沒有說到,。但是,希望能突出其中非常有特色的,。

Facebook和開源之間的戀情

Facebook和開源之間聯(lián)系,,此文不能不提,雖不能說Facebook是多么地鐘愛開源,,但至少可以這樣說,,Facebook著開源的。

Facebook不僅使用(也捐贈)開源軟件,,比如,,LinuxMemcached,、MySQL,、Hadoop等等,它還內(nèi)部開發(fā)不少軟件,,并且也將之開源,。

Facebook開發(fā)的開源工程,包括HipHop,、Cassandra,、ThriftScribe。另外,,Facebook也把Tornado開源 了,。Tornado是一個高性能的Web服務(wù)器框架,由FriendFeed幕后團隊開發(fā)而成,。(20098月,,Facebook收購 FriendFeed。)

Facebook所用到的開源軟件,,可以在Facebook的開源頁面找到,。)

面臨更多的大規(guī)模挑戰(zhàn)

Facebook以一種令人難以置信的速度成長。它的用戶群幾乎是成倍增加,,活躍用戶數(shù)量現(xiàn)已接近5億,。而且,誰都無法預(yù)測今年底,,活躍用戶量會到多少,。

Facebook甚至成立了一個專門的成長小組,,該小組不斷思考如何讓人們使用facebook并融入到facebook中。

這一快速成長,,意味著Facebook將遇到不同的性能瓶頸,。Facebook會面臨來這如下方面的挑戰(zhàn):PV、搜索,、上傳的圖片和狀態(tài)消息,,用戶之間的交互和用戶和Facebook之間的交互帶來的挑戰(zhàn)。

這也是Facebook面對的事實,。Facebook的工程師們將繼續(xù)尋求新方法來擴展(這不只是增加服務(wù)器的問題了),。比如,隨著網(wǎng)站成長,,其圖片存儲系統(tǒng)已經(jīng)多次完全重寫,。

所以,我們將看到Facebook的工程師們奔向下一個山頭,。我們相信他們不會辜負眾望,。畢竟,他們正跨越山頭,,那個我們大多數(shù)人僅能向往的山頭,;他們正擴展網(wǎng)站,那個用戶來自全球各地的網(wǎng)站,。當你實現(xiàn)那個里程碑時,,你將彪炳史冊。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多