【文章內(nèi)容簡介】
不僅僅是社區(qū)網(wǎng)站 基礎(chǔ)設(shè)施的高擴(kuò)展性 應(yīng)用程序的高擴(kuò)展性 能夠服務(wù) PB級(jí)別的數(shù)據(jù) 能夠在毫秒級(jí)別時(shí)間服務(wù)上億次的并發(fā)請求 Facebook的設(shè)計(jì)原則 盡量使用開源工具 Unix設(shè)計(jì)哲學(xué) 平臺(tái)中,什么都是可擴(kuò)展的 高負(fù)載,低延遲 簡單實(shí)用的原則 61 整體技術(shù)架構(gòu) 3 技術(shù)模式 Facebook使用 LAMP作為技術(shù)構(gòu)架, LAMP就是Linux+Apache+Mysql+PHP,一組常用來搭建動(dòng)態(tài)網(wǎng)站或者服務(wù)器的開源軟件。但 Facebook的比普通的 LAMP大得多,以納入其他元素和更多的服務(wù)。例如: Facebook仍使用 PHP,但它已經(jīng)為它建立一個(gè)編譯器,以便它可以分為本地代碼打開了 Web服務(wù)器,從而提高性能; Facebook使用 Linux,但他特別為網(wǎng)絡(luò)吞吐量做了優(yōu)化; Facebook使用 MySQL,但主要是作為一個(gè) Keyvalue的持久性存儲(chǔ), Jions和服務(wù)器邏輯操作在 Web服務(wù)器上操作。因?yàn)樵谀抢锔菀讏?zhí)行。 M e m c a c h e d C l u s t e rM y s q l S t o r a g eF a c e b o o k A P IA p p s A p p s A p p sM e m c a c h e d C l u s t e rS o c i a l S e r v i c e E n g i n eT h r i f t S c r i b e O D SU t i l sW e b F r o n t1. 部署架構(gòu) 2. 系統(tǒng)架構(gòu) M e m c a c h e d C l u s t e rM y s q l C l u s t e rW e b S e r v e r C l u s t e rC D NC l i e n tL o a d B a l a n c e rN e t A p p N F SH t t p R o u t e r整體技術(shù)架構(gòu) 3 技術(shù)模式 63 軟件架構(gòu) 3 技術(shù)模式 Memcached Memcached的是現(xiàn)在互聯(lián)網(wǎng)最有名的軟件之一。 這是一個(gè)分布式內(nèi)存緩存系統(tǒng),用來作為 Web服務(wù)器和 MySQL服務(wù)器之間的緩存層(因?yàn)閿?shù)據(jù)庫訪問比較慢)。 多年以來, Facebook已經(jīng)提出了一些優(yōu)化 Memcached和一些周邊軟件的辦法。如壓縮 Network Stack。 HipHop for PHP PHP作為一種腳本語言,和本地程序相比運(yùn)行是比較緩慢的。 HipHop可以將PHP轉(zhuǎn)換成 C++代碼,然后再進(jìn)行編譯,可以獲得更好的性能。因?yàn)?Facebook嚴(yán)重依賴 PHP,這使得其可以讓 Web服務(wù)器運(yùn)行的更有效率。 Haystack Haystack是 Facebook的高性能照片存儲(chǔ) /檢索系統(tǒng)(嚴(yán)格來說,是一個(gè)對象存儲(chǔ),因此它并不一定要存儲(chǔ)照片)。它有許多工作要做,有超過 20億張上傳的照片,并且每一個(gè)被保存在四個(gè)不同的分辨率,因此有超過 80億張照片。 64 軟件架構(gòu) 3 技術(shù)模式 BigPipe BigPipe是 Facebook開發(fā)的一個(gè)動(dòng)態(tài)的網(wǎng)頁服務(wù)系統(tǒng)。 Facebook使用它來處理每個(gè)網(wǎng)頁,以獲取最佳性能。 Cassandra Cassandra是一個(gè)不會(huì)單點(diǎn)失敗的分布式存儲(chǔ)系統(tǒng), Facebook在搜索功能中使用它。這是為 NoSQL運(yùn)動(dòng)的一個(gè)重要組成部分,并已公開的源代碼(它甚至成為一個(gè) Apache項(xiàng)目)。 Scribe Scribe是一個(gè)靈活的日志系統(tǒng), Facebook在他的內(nèi)部大量使用。它的能夠處理 Facebook數(shù)據(jù)庫中的大規(guī)模日志記錄,并自動(dòng)處理新的日志記錄類別, Facebook有數(shù)百個(gè)日志類別。 65 軟件架構(gòu) 3 技術(shù)模式 Hadoop and Hive Hadoop的由一個(gè)開源的 mapreduce所實(shí)現(xiàn)的,使得它可以在進(jìn)行大數(shù)據(jù)運(yùn)算。 Facebook的使用這個(gè)進(jìn)行數(shù)據(jù)分析。 Hive就是發(fā)源于 Facebook,使得對于 Hadoop使用的 SQL查詢成為可能,從而是其更容易對非程序員使用。 Hadoop和 Hive是開源的(Apache項(xiàng)目),有為數(shù)眾多的使用者,例如雅虎和 Twitter。 Thrift Facebook使用的幾種不同的語言和不同的 Services。 PHP是最終用于前端, Erlang是用于聊天, Java和 C ++也使用于多種場所,也許還有其他語言。 Thrift是一個(gè)內(nèi)部開發(fā)的跨語言的框架,聯(lián)系語言,使他們可以在一起合作,從而使他們之間可以交互。這使得Facebook可以更容易為繼續(xù)保持其跨語言的發(fā)展。 Facebook已經(jīng)讓 Thrift開源。更多的語言支持已被添加到 Thrift。 Varnish Varnish是一個(gè) HTTP加速器,可以作為一個(gè)負(fù)載平衡器,并緩存內(nèi)容,然后可以以閃電般的速度送達(dá)。 Facebook使用的 Varnish來處理照片和個(gè)人資料圖片,處理約每天數(shù)十億的數(shù)據(jù)請求。和其他的軟件一樣, Varnish也是開源的。 66 4 經(jīng)營模式 ?把校園推廣做為切入點(diǎn),逐步發(fā)展至全球用戶 ?實(shí)名制注冊 ?低成本 —— 開放平臺(tái)策略 ?多元化服務(wù),用戶利益最大化 67 5 管理模式 ? Facebook總裁扎克伯格認(rèn)為,一個(gè)語言邏輯不同、無法自由溝通的企業(yè),思想的碰撞怎能產(chǎn)生火花,所以扎克伯格一直提倡一種企業(yè)內(nèi)部的友好的文化。 扎克伯格讓員工抽出 20%的工作時(shí)間泡在一起,而不是去忙各自的業(yè)務(wù)。他讓他們呆在一塊兒,不強(qiáng)迫他們非得成為朋友,但可以讓他們在與同事相處時(shí)感覺更舒適,交流更順暢。通過這樣的方式,營造了一種自由而有效的溝通文化,這是個(gè)不太成文的規(guī)定。交流順暢了,思想得以相互碰撞,并最終促成一個(gè)又一個(gè)項(xiàng)目。 企業(yè)文化 68 5 管理模式 ? Facebook已經(jīng)聘請了很多互聯(lián)網(wǎng)知名人士,其中包括前 Google副總裁Sheryl Sandberg等人來幫助公司制定一個(gè)以廣告為中心的長期業(yè)務(wù)模式。 Facebook也一直在尋找經(jīng)驗(yàn)豐富的高管來管理其龐大的隊(duì)伍。很多經(jīng)驗(yàn)豐富的網(wǎng)絡(luò)公司高管都跳槽到 Facebook,并一心輔佐扎克伯格以便把 Facebook打造成一個(gè)互聯(lián)網(wǎng)巨頭。 2022年底, Myspace首席財(cái)務(wù)官 Gide