面對大規模系統故障,看Facebook如何修復(二)

做者介紹:Ben Maurer是Facebook的網絡基礎團隊的技術領先者,主要負責整個Facebook面向用戶產品的性能和可靠性。Ben於2010年正式加入Facebook,基礎設施團隊的成員。在加入Facebook以前,他與Luis von Ahn共同創立的驗證碼。最近,本與美國數字服務公司合做,以改進在聯邦政府的技術使用。api

昨天,數人云已經爲你們帶來了Ben Maurer分享的「面對大規模系統工程,看Facebook如何處理故障排查(一)」的上半部分,主要涉及致使故障的緣由、以及可使用一個通用的系統等相關內容,今天,正式爲你們帶來了最終的解決方案,跟數人云一塊兒來了解下吧~安全

故障是任何大規模工程系統的一部分。Facebook的文化價值之一就是擁抱失敗。這能夠從掛在門洛帕克總部牆上的海報上獲得體現:「若是你無所畏懼,你會怎樣?」「天佑勇者。」服務器

爲了使Facebook的系統在快速變化的狀況下保持可靠,專門爲其研究了常見的故障模式,並創建抽象理念來解決這些問題。這些理念確保最佳實踐應用於的整個基礎設施。經過創建工具來診斷問題,並建立一種覆盤事故的文化來推進並做出改進,防止將來發生故障。網絡

幫助診斷故障的工具

一個服務器即便有最好的預防措施,可是也會發生一些故障。在停機期間,正確的方式能夠迅速解決問題,最大限度地減小故障持續時間。工具

高密度的儀表板與立體主義理念

在處理故障時,快速的獲取信息也是相當重要的。良好的儀表板會讓工程師快速評估一些可能會出現的異常指標,而後利用這些異常指標來推測緣由。然而,儀表板增加速度愈來愈快,以致於很難迅速對其進行監控,如圖3所示,儀表板顯示的線程比會逐漸增多。性能

爲了解決這個問題,Facebook專門爲其制定了一個專業的儀表板,其採用了立體主義理念,主要用於建立圖表折線圖,折線部分用不一樣顏色來編碼,使其更容易監測信息且看起來更加明瞭,同時能夠將多個類似的數據放在一塊兒進行比較,固然,立體主義也能夠將多個不一樣的數據標準進行比較。上述的「立體主義理念」,能夠更便捷的使用鍵盤進行操控,以此保證工程師能夠快速查看多個指標。如圖4所示,在不一樣高度狀況下,面積圖和平行線圖表所顯示相同的數據集,在區域圖版本中,所顯示的30像素點很難被監測,可是,立體主義理念可使它更容易找到峯值,即便在30像素點也能很好的被檢測到。學習

解決故障的有效辦法

通常來講,致使故障的首要緣由就是人爲緣由,而調試故障的最有效的方法是尋找人對其所作的更改,對這些已更改的信息進行收集整理,從配置更改入手,使用「opsstreamm」新軟件。以前,因爲較多的工程師對數據進行更改,導致數據源就變得愈來愈複雜,致使人們對其沒法進行評估。ui

學習和借鑑

故障發生後,其中的故障審查過程能夠更好的瞭解這些故障。編碼

故障審查過程當中,不管是誰都沒有必要推卸責任,也沒有人會由於這個故障被批評,其實,審查的目的是爲了瞭解故障的原由,以及修復故障是否會引發一些不良現象出現,同時提出最爲安全有效解決辦法,以此來減小此類故障的再次發生。spa

現在,Facebook已經開發出一種解決方案,稱爲DERP(檢測、升級、修復、預防),它能夠提出更及時有效的解決方法。

  • 檢測:故障如何檢測報警,儀表板的用戶報告如何作?

  • 升級:相關的人員可以很快的介入嗎?這些人多是經過警報而不是手動引入嗎?

  • 修復:應該採起怎樣的措施來解決這個問題?這些步驟可能採起自動化嗎?

  • 預防:哪些改進能夠消除此種故障再次發生?怎樣汲取教訓,以減小此種故障發生機率?
    DERP能夠分析故障的每一步,能夠藉助這種分析,即便不能確保此類故障再也不發生,但至少能夠保證下次恢復的更快。

「快速移動」的理念與穩定性不相矛盾,兩者能夠相互兼容。

Facebook的基礎設施提供了安全:配置系統能夠防止快速部署不良配置,其中核心服務是爲客戶提供API,以此避免故障發生;核心庫是爲了解決因資源枯竭所引起的延遲問題,創建更方便的儀表板和工具助力解決可能引發的問題,同時對故障進行改進,最重要的是,故障發生後,應該汲取經驗教訓,進行更改,使基礎信息更穩定。

以上內容是數人云今天爲你們帶來的Facebook面對大規模系統工程故障時所提供的的解決方案,能夠經過高密度的儀表板與立體主義理念進行故障排查,而後經過DERP對其進行實時監測、升級、修復等,以此來確保信息更穩定,保證故障發生的頻率逐漸下降。

做者:Ben Maurer

原文:Fail at Scale Reliability in the face of rapid change

http://queue.acm.org/detail.c...

相關文章
相關標籤/搜索