分享使人快樂!
大型軟體系統生命週期的絕大部分都處於“使用”階段,而非“設計”或“實現”階段。那麼為什麼我們卻總是認為軟體工程應該首要關注設計和實現呢?在《SRE:Google運維解密》中,Google SRE的關鍵成員解釋了他們是如何對軟體進行生命週期的整體性關注的,以及為什麼這樣做能夠幫助Google成功地構建、部署、監控和運維世界上現存的軟體系統。透過閱讀《SRE:Google運維解密》,讀者可以學習到Google工程師在提高系統部署規模、改進可靠性和資源利用效率方面的指導思想與具體實踐——這些都是可以立即直接應用的寶貴經驗。 任何一個想要建立、擴充套件大規模整合系統的人都應該閱讀《SRE:Google運維解密》。《SRE:Google運維解密》針對如何構建一個可長期維護的系統提供了非常寶貴的實踐經驗
此書包含如下內容:
前言 xxxi序言 xxxv第Ⅰ部分 概覽第1 章 介紹 2系統管理員模式 2Google 的解決之道:SRE 4SRE 方法論 6確保長期關注研發工作 6在保障服務SLO 的前提下最大化迭代速度 7監控系統 8應急事件處理 8變更管理 9需求預測和容量規劃 9資源部署 10效率與效能 10小結 10第2 章 Google 生產環境:SRE 視角 11硬體 11管理物理伺服器的系統管理軟體 13管理物理伺服器 13儲存 14網路 15其他系統軟體 16分散式鎖服務 16監控與警報系統 16軟體基礎設施 17研發環境 17莎士比亞搜尋:一個示範服務 18使用者請求的處理過程 18任務和資料的組織方式 19第Ⅱ部分 指導思想第3 章 擁抱風險 23管理風險 23度量服務的風險 24服務的風險容忍度 25辨別消費者服務的風險容忍度 26基礎設施服務的風險容忍度 28使用錯誤預算的目的 30錯誤預算的構建過程 31好處 32第4 章 服務質量目標 34服務質量術語 34指標 34目標 35協議 36指標在實踐中的應用 37運維人員和終端使用者各關心什麼 37指標的收集 37彙總 38指標的標準化 39目標在實踐中的應用 39目標的定義 40目標的選擇 40控制手段 42SLO 可以建立使用者預期 42協議在實踐中的應用 43第5 章 減少瑣事 44瑣事的定義 44為什麼瑣事越少越好 45什麼算作工程工作 46瑣事繁多是不是一定不好 47小結 48第6 章 分散式系統的監控 49術語定義 49為什麼要監控 50對監控系統設定合理預期 51現象與原因 52黑盒監控與白盒監控 534 個黃金指標 53關於長尾問題 54度量指標時採用合適的精度 55簡化,直到不能再簡化 55將上述理念整合起來 56監控系統的長期維護 57Bigtable SRE :警報過多的案例 57Gmail :可預知的、可指令碼化的人工干預 58長跑 59小結 59第7 章 Google 的自動化系統的演進 60自動化的價值 60一致性 60平臺性 61修復速度更快 61行動速度更快 62節省時間 62自動化對Google SRE 的價值 62自動化的應用案例 63Google SRE 的自動化使用案例 63自動化分類的層次結構 64讓自己脫離工作:自動化所有的東西 66舒緩疼痛:將自動化應用到叢集上線中 67使用Prodtest 檢測不一致情況 68冪等地解決不一致情況 69專業化傾向 71以服務為導向的叢集上線流程 72Borg :倉庫規模計算機的誕生 73可靠性是最基本的功能 74建議 75第8 章 釋出工程 76釋出工程師的角色 76釋出工程哲學 77自服務模型 77追求速度 77密閉性 77強調策略和流程 78持續構建與部署 78構建 78分支 79測試 79打包 79Rapid 系統 80部署 81配置管理 81小結 82不僅僅只對Google 有用 83一開始就進行釋出工程 83第9 章 簡單化 85系統的穩定性與靈活性 85乏味是一種美德 86我絕對不放棄我的程式碼 86“負程式碼行”作為一個指標 87最小 API 87模組化 87釋出的簡單化 88小結 88第Ⅲ部分 具體實踐第10 章 基於時間序列資料進行有效報警 93Borgmon 的起源 94應用軟體的監控埋點 95監控指標的收集 96時間序列資料的儲存 97標籤與向量 98Borg 規則計算 99報警 104監控系統的分片機制 105黑盒監控 106配置檔案的維護 106十年之後 108第11 章 on-call 輪值 109介紹 109on-call 工程師的一天 110on-call 工作平衡 111數量上保持平衡 111質量上保持平衡 111補貼措施 112安全感 112避免運維壓力過大 114運維壓力過大 114奸詐的敵人—運維壓力不夠 115小結 115第12 章 有效的故障排查手段 116理論 117實踐 119故障報告 119定位 119檢查 120診斷 122測試和修復 124神奇的負面結果 125治癒 126案例分析 127使故障排查更簡單 130小結 130第13 章 緊急事件響應 131當系統出現問題時怎麼辦 131測試導致的緊急事故 132細節 132響應 132事後總結 132變更部署帶來的緊急事故 133細節 133事故響應 134事後總結 134流程導致的嚴重事故 135細節 135災難響應 136事後總結 136所有的問題都有解決方案 137向過去學習,而不是重複它 138為事故保留記錄 138提出那些大的,甚至不可能的問題:假如…… 138鼓勵主動測試 138小結 138第14 章 緊急事故管理 140無流程管理的緊急事故 140對這次無流程管理的事故的剖析 141過於關注技術問題 141溝通不暢 141不請自來 142緊急事故的流程管理要素 142巢狀式職責分離 142控制中心 143實時事故狀態文件 143明確公開的職責交接 143一次流程管理良好的事故 144什麼時候對外宣佈事故 144小結 145第15 章 事後總結:從失敗中學習 146Google 的事後總結哲學 146協作和知識共享 148建立事後總結文化 149小結以及不斷最佳化 151第16 章 跟蹤故障 152Escalator 152Outalator 153聚合 154加標籤 155分析 155未預料到的好處 156第17 章 測試可靠性 157軟體測試的型別 158傳統測試 159生產測試 160創造一個構建和測試環境 163大規模測試 165測試大規模使用的工具 166針對災難的測試 167對速度的渴求 168釋出到生產環境 170允許測試失敗 170整合 172生產環境探針 173小結 175第18 章 SRE 部門中的軟體工程實踐 176為什麼軟體工程專案對SRE 很重要 176Auxon 案例分析:專案背景和要解決的問題 177傳統的容量規劃方法 177解決方案:基於意圖的容量規劃 179基於意圖的容量規劃 180表達產品意圖的先導條件 181Auxon 簡介 182需求和實現:成功和不足 183提升瞭解程度,推進採用率 185團隊內部組成 187在SRE 團隊中培養軟體工程風氣 187在SRE 團隊中建立起軟體工程氛圍:招聘與開發時間 188做到這一點 189小結 190第19 章 前端伺服器的負載均衡 191有時候硬體並不能解決問題 191使用DNS 進行負載均衡 192負載均衡:虛擬IP 194第20 章 資料中心內部的負載均衡系統 197理想情況 198識別異常任務:流速控制和跛腳鴨任務 199異常任務的簡單應對辦法:流速控制 199一個可靠的識別異常任務的方法:跛腳鴨狀態 200利用劃分子集限制連線池大小 201選擇合適的子集 201子集選擇演算法一:隨機選擇 202子集選擇演算法二:確定性演算法 204負載均衡策略 206簡單輪詢演算法 206最閒輪詢策略 209加權輪詢策略 210第21 章 應對過載 212QPS 陷阱 213給每個使用者設定限制 213客戶端側的節流機制 214重要性 216資源利用率訊號 217處理過載錯誤 217決定何時重試 218連線造成的負載 220小結 221第22 章 處理連鎖故障 223連鎖故障產生的原因和如何從設計上避免 224伺服器過載 224資源耗盡 225服務不可用 228防止軟體伺服器過載 228佇列管理 229流量拋棄和優雅降級 230重試 231請求延遲和截止時間 234慢啟動和冷快取 236保持呼叫棧永遠向下 238連鎖故障的觸發條件 238程序崩潰 239程序更新 239新的釋出 239自然增長 239計劃中或計劃外的不可用 239連鎖故障的測試 240測試直到出現故障,還要繼續測試 240測試最常用的客戶端 241測試非關鍵性後端 242解決連鎖故障的立即步驟 242增加資源 242停止健康檢查導致的任務死亡 242重啟軟體伺服器 242丟棄流量 243進入降級模式 243消除批處理負載 244消除有害的流量 244小結 244第23 章 管理關鍵狀態:利用分散式共識來提高可靠性 246使用共識系統的動力:分散式系統協調失敗 248案例1 :腦裂問題 249案例2 :需要人工干預的災備切換 249案例3 :有問題的小組成員演算法 249分散式共識是如何工作的 250Paxos 概要:協議示例 251分散式共識的系統架構模式 251可靠的複製狀態機 252可靠的複製資料儲存和配置儲存 252使用領頭人選舉機制實現高可用的處理系統 253分散式協調和鎖服務 253可靠的分散式佇列和訊息傳遞 254分散式共識系統的效能問題 255複合式Paxos :訊息流過程詳解 257應對大量的讀操作 258法定租約 259分散式共識系統的效能與網路延遲 259快速Paxos 協議:效能最佳化 260穩定的領頭人機制 261批處理 262磁碟訪問 262分散式共識系統的部署 263副本的數量 263副本的位置 265容量規劃和負載均衡 266對分散式共識系統的監控 270小結 272第24 章 分散式週期性任務系統 273Cron 273介紹 273可靠性 274Cron 任務和冪等性 274大規模Cron 系統 275對基礎設施的擴充套件 275對需求的擴充套件 276Google Cron 系統的構建過程 277跟蹤Cron 任務的狀態 277Paxos 協議的使用 277領頭人角色和追隨者角色 278儲存狀態 281運維大型Cron 系統 282小結 283第25 章 資料處理流水線 284流水線設計模式的起源 284簡單流水線設計模式與大資料 284週期性流水線模式的挑戰 285工作分發不均造成的問題 285分散式環境中週期性資料流水線的缺點 286監控週期性流水線的問題 287驚群效應 287摩爾負載模式 288Google Workflow 簡介 289Workflow 是模型—檢視—控制器(MVC)模式 290Workflow 中的執行階段 291Workflow 正確性保障 291保障業務的持續性 292小結 294第26 章 資料完整性:讀寫一致 295……第27 章 可靠地進行產品的大規模釋出 322……第Ⅳ部分 管理第28 章 迅速培養SRE 加入on-call 341……第29 章 處理中斷性任務 355……第30 章 透過嵌入SRE 的方式幫助團隊從運維過載中恢復 363……第 31 章 SRE 與其他團隊的溝通與協作 370……第32 章 SRE 參與模式的演進歷程 383……第Ⅴ部分 結束語第33 章 其他行業的實踐經驗 398……第34 章 結語 408附錄A 系統可用性 411附錄B 生產環境運維過程中的最佳實踐 412附錄C 事故狀態文件示範 417附錄D 事後總結示範 419附錄E 釋出協調檢查列表 423附錄F 生產環境會議記錄示範 425參考文獻 427索引 439
連結: https://pan.baidu.com/s/1_DR5K1HUZ1sa1hX8UEC5IA 提取碼: 67xc