Facebook一直以來(lái)就有一個(gè)問(wèn)題,就是在網(wǎng)站訪問(wèn)的鼎峰時(shí)期,如何確保其成千上萬(wàn)臺(tái)的Cache服務(wù)器正常的運(yùn)行。如果Cache服務(wù)器出了問(wèn)題,那么Facebook恐怕也會(huì)“萬(wàn)劫不復(fù)”,可謂一榮俱榮,一損俱損。因此Facebook創(chuàng)建了Claspin,形象來(lái)說(shuō),它就是Cache的健康熱圖。
Facebook的工程團(tuán)隊(duì)已經(jīng)創(chuàng)造了這個(gè)工具,它可以幫助這位社交網(wǎng)絡(luò)巨頭確定Cache服務(wù)器在社交平臺(tái)上是不是“健康”運(yùn)行的。上周三Facebook的博客上發(fā)表了Claspin的詳細(xì)情況。
最好的解決的辦法,就是把Facebook的Cache系統(tǒng)轉(zhuǎn)化成成一個(gè)易于理解的可視化數(shù)據(jù),這樣就可以迅速發(fā)現(xiàn)問(wèn)題,進(jìn)而能快速的解決這個(gè)問(wèn)題。Facebook的工程師Sean Lynch,介紹了Claspin的設(shè)計(jì)過(guò)程。不過(guò)Facebook擁有數(shù)以萬(wàn)計(jì)的Memcache服務(wù)器和TAO緩存圖像數(shù)據(jù)庫(kù),一旦系統(tǒng)陷入停頓狀態(tài),有時(shí)很難快速的找出發(fā)生故障的Cache。
Claspin正在工作 綠色說(shuō)明運(yùn)行正常
緩存是Facebook的基礎(chǔ)架構(gòu)中最重要的功能之一,因?yàn)樗4媪俗罱咏黈eb服務(wù)器的存儲(chǔ)數(shù)據(jù),這也是為了向用戶盡可能快地提供內(nèi)容。因此,Cache是一個(gè)真正的關(guān)鍵點(diǎn),它能讓用戶體驗(yàn)變的更好。但是Lynch表示,社交網(wǎng)絡(luò)目前還沒(méi)有辦法的查找到出現(xiàn)故障的Cache服務(wù)器。
Facebook有兩個(gè)主要的緩存系統(tǒng):Memcache,這是一個(gè)簡(jiǎn)單的后備高速緩存,它的智慧主要體現(xiàn)在客戶端;TAO,它是一個(gè)圖像緩存數(shù)據(jù)庫(kù),使 用的是MySQL。不過(guò)這兩個(gè)系統(tǒng)之間,我們有成千上萬(wàn)張圖表,其中一些被收集到顯示面板上,來(lái)顯示不同的延遲、請(qǐng)求速率和來(lái)自客戶端和服務(wù)器收集的誤碼率統(tǒng)計(jì)數(shù)據(jù)。這些圖表和顯示面板的大部分都來(lái)自Facebook“數(shù)據(jù)存儲(chǔ)操作”或者ODS的支持。這個(gè)工作是排在第一位的,但是隨著Facebook在規(guī)模上的不斷成長(zhǎng),一旦出現(xiàn)了錯(cuò)誤,想找出哪一塊出現(xiàn)了問(wèn)題就變得越來(lái)越難。所以,我開始思考編碼“tribal knowledge”,我們使用故障排除的方式,讓人們更容易的評(píng)估出緩存的狀態(tài),可以一目了然。
Lynch開發(fā)的算法可以對(duì)Cache“健康”的最重要指標(biāo)進(jìn)行排名,進(jìn)過(guò)團(tuán)隊(duì)的討論,最后決定使用熱圖,它可以捕捉1萬(wàn)臺(tái)服務(wù)器的運(yùn)行情況,并且能在一塊屏幕上顯示數(shù)據(jù)改變的結(jié)果。顏色變化是30個(gè)或更多的統(tǒng)計(jì)數(shù)據(jù)在后臺(tái)進(jìn)行實(shí)時(shí)計(jì)算的結(jié)果。他稱這套工具為Claspin,現(xiàn)在在Facebook內(nèi)部廣為傳播,可以說(shuō)這是在以工程為主導(dǎo)的公司成功的標(biāo)志之一。
Facebook此次奉獻(xiàn)出一個(gè)很好的工具,不禁讓人想起了戴爾曾經(jīng)為了提高工廠生產(chǎn)率的那份狂熱的努力,從桌子的高度的設(shè)計(jì)到任何一個(gè)小配件安裝的細(xì)節(jié),所有的一切都考慮在內(nèi)。Facebook也在做著類似的事情,F(xiàn)acebook開發(fā)的這套工具有助于確保它在任何時(shí)候都能對(duì)網(wǎng)絡(luò)還有網(wǎng)絡(luò)帶來(lái)的廣告收入進(jìn)行優(yōu)化。Facebook也在開發(fā)自己的Six Sigma或Kaizen。