架構師修煉之道 — 思維、方法與實踐
內容描述
本書主要講解如何能夠做好互聯網架構設計,書中會詳盡介紹架構的一些心得心法,不局限於具體的技術。大都是通用的技術意識和思維方法。書中會介紹作者在工作中遇到的實際案例和總結方法,闡述架構設計中的一些方法論。如何能夠設計出穩定、高可用的互聯網服務。希望通過本書的介紹,讓互聯網後台的從業者,能夠受到些啟發,早日成為架構師,設計出更多更穩定更高效的系統架構。
目錄大綱
目 錄 第一部分 架構簡介 第1章 架構簡介 2 1.1 架構的定義 2 1.2 對架構師的要求 4 1.3 互聯網架構的挑戰 7 1.4 一切盡在控制 8 1.5 小結 10 第二部分 架構設計的技術方法 第2章 切分與擴展 16 2.1 切分 16 2.1.1 數據維度切分 16 2.1.2 邏輯維度切分 23 2.1.3 切分的優點 24 2.2 擴展 25 2.2.1 部署擴展 25 2.2.2 升級擴展 27 2.2.3 set模型 29 2.3 小結 31 第3章 主動發現 33 3.1 日誌 34 3.1.1 為什麽要記日誌 34 3.1.2 日誌級別 35 3.1.3 日誌類型 36 3.1.4 註意事項 38 3.2 監控 40 3.3 主動發現的監控標準 43 3.3.1 系統層監控 43 3.3.2 用戶側監控 44 3.3.3 應用層監控 45 3.4 其他形式的監控 47 3.5 小結 49 第4章 自動化 52 4.1 自動部署 54 4.1.1 準備 54 4.1.2 實現 55 4.1.3 驗證 57 4.2 自動恢復 58 4.2.1 服務恢復 58 4.2.2 流量遷移 60 4.3 提升自動化意識 63 4.4 其他場景 64 4.5 小結 66 第5章 灰度升級 67 5.1 策略 68 5.1.1 按照用戶身份執行灰度策略 68 5.1.2 按照號段執行灰度策略 69 5.1.3 按照命令號執行灰度策略 70 5.1.4 按照時間執行灰度策略 71 5.2 灰度部署方式 73 5.2.1 藍綠部署/發布 73 5.2.2 金絲雀發布 74 5.3 註意事項 75 5.3.1 數據採樣 75 5.3.2 及時回滾 76 5.3.3 周期完全 76 5.3.4 測試完全 77 5.3.5 充分驗證 78 5.4 案例—系統遷移下線操作 79 5.4.1 驗證和比對 79 5.4.2 回滾 80 5.5 小結 81 第6章 過載保護 82 6.1 過載的現象及原因 82 6.1.1 什麽是過載 82 6.1.2 過載現象及原因分析 85 6.2 處理方式 86 6.2.1 隔離 87 6.2.2 限流 88 6.2.3 節流和防抖 94 6.2.4 動態調節 95 6.2.5 盡早拒絕 96 6.2.6 調整緩沖區大小 97 6.2.7 減少重試 98 6.2.8 做好容量評估 98 6.3 小結 99 第7章 負載均衡 100 7.1 理論算法 100 7.1.1 基本輪詢 100 7.1.2 加權輪詢 102 7.1.3 隨機訪問 103 7.1.4 源地址Hash 104 7.1.5 最小連接數 105 7.1.6 映射分配 106 7.1.7 一致性Hash 107 7.2 動態負載均衡 110 7.3 常用組件 111 7.3.1 DNS 111 7.3.2 Nginx 111 7.3.3 LVS 113 7.3.4 NAT模式 113 7.3.5 DR模式 114 7.3.6 IP Tunneling模式 115 7.3.7 SDK組件 117 7.4 實際案例—Web類業務負載均衡實現 117 7.5 小結 119 第8章 柔性 120 8.1 理論基礎 122 8.1.1 CAP定理 122 8.1.2 BASE理論 124 8.2 柔性的實現方法 126 8.2.1 產品角度 127 8.2.2 技術角度 128 8.3 驗證方式 131 8.4 小結 132 第三部分 架構思維意識 第9章 穩定為王 137 9.1 控制因素 137 9.1.1 安全 137 9.1.2 變更 141 9.2 保障方法 144 9.2.1 合理拒絕 145 9.2.2 釐清主次關系 145 9.2.3 容量量化 147 9.2.4 預先準備 148 9.2.5 註重監控 149 9.2.6 敬畏之心 150 9.3 應對異常 152 9.3.1 處理事故 152 9.3.2 管理預期 153 9.3.3 復盤總結 153 9.3.4 有效預防 153 9.3.5 謹慎變更 154 9.4 小結 155 第10章 完成比完美重要 156 10.1 先扛住再優化 156 10.1.1 快速搶占市場 157 10.1.2 實現先於性能 157 10.1.3 需求可能修改 158 10.1.4 驗證用戶行為 158 10.1.5 突發問題案例 158 10.2 最小可用,快速迭代 160 10.3 不要等待 160 10.4 接受不完美 161 10.4.1 分清主次 161 10.4.2 自動化降級 162 10.4.3 代價最低 162 10.5 及時償還技術債務 163 10.5.1 定期重構 164 10.5.2 及時清理 165 10.5.3 對技術有追求 167 10.6 小結 167 第11章 聚沙成塔 168 11.1 小而簡潔 168 11.2 擴展能力 172 11.3 小結 173 第12章 自動化思維 175 12.1 拒絕重復 175 12.1.1 時間成本 175 12.1.2 解決重復 176 12.2 工具系統化 178 12.3 小結 180 第13章 產品思維 181 13.1 體驗業務 181 13.2 體驗競品 182 13.3 揚長避短 183 13.4 控制欲望 184 13.5 獻計獻策 185 13.6 反哺方案 185 13.7 小結 186 第四部分 善用工具 第14章 算法 189 14.1 樹狀數組 190 14.1.1 問題場景 190 14.1.2 排行榜實現及優化方案 191 14.1.3 樹狀數組實現排行榜 191 14.1.4 樹狀數組優化排行榜 195 14.2 多階Hash算法 196 14.2.1 原理 196 14.2.2 優點 197 14.2.3 缺點 198 14.3 利用線性同餘的一致性Hash算法 199 14.3.1 算法內容 199 14.3.2 適用場景 199 14.3.3 實現原理 200 14.4 隨機數在互聯網業務中的應用 203 14.4.1 隨機數的生成方法 203 14.4.2 誤用隨機數的場景 205 14.4.3 項目中用到隨機數的場景 207 14.5 小結 212 第15章 流程和文化 213 15.1 流程 213 15.1.1 需求階段 214 15.1.2 開發階段 215 15.1.3 測試階段 217 15.1.4 發布階段 219 15.1.5 運營階段 220 15.1.6 管理機制 221 15.2 文化 222 15.3 小結 223 第五部分 案例剖析 第16章 架構案例剖析 226 16.1 小型案例—統計用戶在線時長 226 16.1.1 需求描述 226 16.1.2 項目背景 227 16.1.3 需求分析 228 16.1.4 實現方案 228 16.1.5 案例總結 230 16.2 中型案例—抽獎活動 231 16.2.1 需求描述 231 16.2.2 需求分析 231 16.2.3 實現方案 232 16.2.4 整體架構設計 238 16.2.5 案例總結 240 16.3 大型案例—短網址服務 241 16.3.1 需求描述 241 16.3.2 需求分析 241 16.3.3 需求一:內部使用 243 16.3.4 需求二:大型互聯網服務方案 246 16.4 小結 256