Google App引擎如何可靠地支援每天1千億的請求?
站點可靠性工程是一系列工程目標與技術,能夠讓任何人運維更好的產品系統,它與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
相關文章
- Google:Google DNS 每天請求數 700 億次 成世界最大 DNS 服務GoDNS
- uniapp之post請求如何用APP
- 支援https請求以及https請求的抓包HTTP
- uniapp formdate請求APPORM
- uni-app的POST請求和GET請求APP
- iOS開發 支援https請求以及https請求的抓包iOSHTTP
- Vue——介面請求支援跨域Vue跨域
- SpringMVC中如何傳送GET請求、POST請求、PUT請求、DELETE請求。SpringMVCdelete
- 如何請求您的Apple ID帳戶資料的副本APP
- WKWebView的快取策略不支援POST請求!!!WebView快取
- php 支援jsonp跨域請求PHPJSON跨域
- 【UniApp】-uni-app-網路請求APP
- 如何避免舊請求的資料覆蓋掉最新請求
- Laravel 是如何請求 Request 的Laravel
- Google App Engine正式支援Python 2.7GoAPPPython
- GitHub Draft Pull請求支援新的協作流程GithubRaft
- 前端傳送的請求,是如何請求到後端服務的?前端後端
- python requests get請求 如何獲取所有請求Python
- uni-app網路請求的封裝APP封裝
- 分析移動端APP的網路請求APP
- flask如何請求別的網站Flask網站
- 瀏覽器如何將你的http請求轉為https請求?瀏覽器HTTP
- iOS 同步請求 非同步請求 GET請求 POST請求iOS非同步
- RequestMappingHandlerMapping請求地址對映流程!APP
- 如何根據介面請求型別和請求方法,自動執行對應請求型別
- 有趣的請求引數/請求頭
- 封裝 uniapp 請求庫的最佳實踐封裝APP
- 請求OpenFeign的GET請求時,請求為何失敗?
- IIS在預設情況並不支援對PUT和DELETE請求的支援delete
- WebApi系列~不支援put和delete請求的解決方法WebAPIdelete
- 給Retrofit新增離線快取,支援Post請求快取
- RequestMappingHandlerMapping請求地址對映的初始化流程!APP
- onethink 如何使用get請求?
- Go如何響應http請求?GoHTTP
- NGINX如何配置跨域請求Nginx跨域
- 如何傳送請求以及AJAX
- ajax請求如何防止快取快取
- 如何壓縮 HTTP 請求正文HTTP