Google App引擎如何可靠地支援每天1千億的請求?

banq發表於2016-04-07
站點可靠性工程(Site Reliability Engineering 簡稱SRE)是如何保證Google App Engine每天能夠支援千億級的請求呼叫?

站點可靠性工程是一系列工程目標與技術,能夠讓任何人運維更好的產品系統,它與DevOps理念一起擁有更廣泛的IT社群使用者,它很有趣因為它是一個相對直接更大規模地提升效能和可靠性的方法。對於任何公司都是有用的,SRE技術能夠增加計算服務系統運維的有效性。

以下是對在Google從事了9年的SRE站點可靠性工程師 Chris Jones的採訪,原文來自:

Google Cloud Platform Blog: Lessons from a Google

Q: Chris, 能告訴我在App Engine有多少SRE操作以及是怎樣的一個規模?
CJ: 在App Engine上我們有數百萬個App,每天服務超過千億請求,這些都是由很多SRE支援的。

Q: SRE人員如此少,該怎麼做?
CJ: SRE是一種工程目標,用來實現大規模分散式計算服務。 使得系統高標準是關鍵,這意味著所有系統工作都必須以彼此相似的方式執行,也就是說,只需要很少的人手就可以了,因為沒有太多複雜性需要理解和處理。

自動化運維也很重要: 我們的turn-up處理過程是用於自動增加新容量或擴充套件自動負載平衡,這樣我們就可以很好實現計算機的自動擴充套件,無需任何人工介入,因此不需要太多人。

如果你投入一個處理過程一個人力,那麼這個處理工程是乏味重複,而使用自動處理,當遭遇錯誤時,計算響應失敗的時間要比人工快得多,當通知我們出錯時,計算機自己已經將流量匯入到另外一個資料中心,繼續保持服務啟動和執行,人做自己擅長的事情,機器做它們擅長的事情。

Q: 在SRE模型後面是否有其他目標?
CJ: 因為有SRE團隊工作於許多Google服務,我們能夠跨產品擴充套件這些標準原理,SRE-built 工具原來用於部署Gmail的新版本,作為特例,需要擴充套件到適合其他地方的更普遍性上,這就意味著每個團隊並不需要它們自己的部署升級方式了,這就能確保每個產品都能獲得工具升級帶來的好處,導致整個組織的工具越來越好。

另外,軟體工程和系統工程兩個知識都集合在SRE中,這將綜合利用兩者的優點,比如谷歌的軟體網路負載平衡 Maglev,它是谷歌雲負載平衡的基礎技術。

Q: 這些方式如何影響App Engine和執行在App Engine上的客戶應用?
CJ: 這裡有一個很好的故事,在2013夏天我們將所有App引擎從美國一個地區遷移到另外一個地區,沒有發生任何當機時間。

Q: 如何做到的?
CJ:我們關閉了一個App Engine叢集, 按照設計要求,執行在這個叢集上面的應用就自動遷移到剩下還在執行的叢集上,我們提前在目標地區資料中心建立了美國地區的高複製資料儲存(High Replication Datastore)的複製,這樣這些應用資料就到了遷移的目標地區,遷移到新的資料儲存幾乎是實時的,以便符合時間一致性,當到時間啟動新地區的App引擎時,應用會從備份的叢集自動遷移到新地區的引擎上,並且資料也已經準備好,我們就這樣重複這樣的處理過程直至全部完成。

更高階的準備則是結合廣泛的測試和因對意外的計劃,當出現問題時,我們能處於就緒狀態以便應對,從而對客戶影響最小。我們會將所有的工序放在一個內部的驗收步驟,這是SRE另外一個關鍵步驟,理解哪裡出了錯誤,以及如何在將來解決它。

Q: Very cool. 如何能瞭解關於SRE更多情況?
CJ: Sure. 如果你有興趣學習更多SRE,可以檢視這個網站:https://landing.google.com/sre/,包括SREcon

相關文章