攜程架構實踐

攜程技術團隊

買這商品的人也買了...

商品描述

一個好的架構就像一個好的制度,我們不會時時刻刻感受到它的存在,但在關鍵時刻,它決定了系統能夠到達的高度。本書濃縮了攜程公司的整個技術架構,可以幫助讀者瞭解支撐一家大型企業所需要的核心技術產品,以及它們的架構和麵臨的挑戰。本書由攜程的一線研發工程師們精心編寫,他們對攜程各個領域的技術實踐瞭如指掌,本書所提到的各種系統離不開他們的耕耘。在給讀者呈現攜程架構實踐的同時,也希望本書能給讀者帶來一些警示和啟發,共同推動技術的進步。不同領域的架構關註點各有側重,但是方法論是相通的。希望讀者通過本書瞭解攜程的架構實踐,拓寬視野,豐富自己的架構工具箱,在遇到難題時,看看其他領域的解決思路,就可能碰撞出意想不到的“火花”。

目錄大綱

第1 章 攜程整體技術架構 001
1.1 攜程技術架構概覽 003
1.1.1 分層架構 003
1.1.2 接入層技術 005
1.1.3 後端技術 006
1.1.4 技術保障 007
1.2 攜程整體技術架構演進 008
1.2.1 呼叫中心時代 009
1.2.2 互聯網和移動互聯網時代 009
1.2.3 大數據和人工智能時代 011

第2 章 移動大前端 013
2.1 CRN 框架 014
2.1.1 背景介紹 014
2.1.2 框架設計 015
2.1.3 性能優化 016
2.1.4 配套支撐系統建設 019
2.2 Web 框架 021
2.2.1 微信小程序應用框架CWX 021
2.2.2 CRN 瀏覽器端運行框架CRN-Web 024
2.2.3 下一代前端框架解決方案 NFES 027
2.3 插件化 033
2.3.1 插件化的來源 033
2.3.2 方案的實現 034
2.4 Node.js 038
2.4.1 應用場景 038
2.4.2 應用部署 039
2.4.3 運維與監控 040
2.4.4 公共服務 044
2.5 移動發布平臺MCD 045
2.5.1 平臺服務架構 045
2.5.2 生命周期管理 046
2.5.3 開發流程管理 048
2.5.4 發布流程管理 049
2.6 用戶行為監測UBT 050
2.6.1 數據採集 050
2.6.2 傳輸與存儲 052
2.6.3 實時分析 054
2.7 CData 055
2.7.1 性能管理 055
2.7.2 錯誤統計 056
2.7.3 訪問量統計 057
2.7.4 排障支持 057
2.8 本章小結 058

第3 章 用戶接入 059
3.1 GSLB 技術 059
3.1.1 GSLB 系統概述 060
3.1.2 DNS 工作方式 060
3.1.3 GSLB 工作原理 061
3.2 CDN 063
3.2.1 CDN 靜態加速 064
3.2.2 CDN 動態加速 065
3.2.3 CDN 動態域名切換 066
3.3 App 端接入 066
3.4 負載均衡 067
3.4.1 負載均衡器工作原理 068
3.4.2 負載均衡優化手段 070
3.4.3 負載均衡算法 074
3.4.4 負載均衡會話保持 076
3.5 軟負載系統SLB 077
3.5.1 SLB 的產生背景 077
3.5.2 SLB 的架構設計 078
3.5.3 SLB 實現的幾個難點 083
3.6 API Gateway 086
3.6.1 API Gateway 的架構設計 087
3.6.2 API Gateway 在攜程的使用 091
3.7 本章小結 092

第4 章 呼叫中心 093
4.1 軟交換系統SoftPBX 095
4.1.1 攜程軟交換系統現狀 095
4.1.2 軟交換架構與信令路徑 095
4.1.3 組件規劃與分佈 096
4.1.4 應用場景 099
4.2 交互式語音應答系統SoftIVR 101
4.2.1 什麽是交互式語音應答 101
4.2.2 SoftIVR 架構與特點 101
4.2.3 信令傳輸流程與核心組件 104
4.2.4 應用場景 108
4.3 全渠道客服雲系統 109
4.3.1 全渠道客服雲系統的意義 109
4.3.2 客服雲整體架構 111
4.3.3 服務端架構 112
4.3.4 應用場景 115
4.4 本章小結 117

第5 章 框架中間件 118
5.1 服務化 120
5.1.1 為什麽需要服務化中間件框架 120
5.1.2 服務化中間件框架的基本架構 121
5.1.3 服務註冊中心設計解析 122
5.1.4 服務治理系統功能解析 125
5.2 消息隊列 128
5.2.1 消息隊列的特性與使用場景 128
5.2.2 主流消息隊列 129
5.2.3 攜程消息隊列QMQ 132
5.3 配置中心 137
5.3.1 為什麽需要配置中心 137
5.3.2 配置中心的特性 138
5.3.3 Apollo 源碼部分解析 139
5.3.4 配置中心面臨的新挑戰 141
5.4 數據訪問 142
5.4.1 數據訪問層概述 142
5.4.2 為什麽要引入數據訪問中間件 143
5.4.3 數據訪問中間件的主流方案 144
5.4.4 攜程數據訪問中間件功能解析 146
5.5 緩存層 150
5.5.1 總體架構 150
5.5.2 分片和路由 151
5.5.3 高可用 153
5.5.4 水平拆分 154
5.5.5 跨機房容災 156
5.5.6 跨區域同步 159
5.5.7 雙向同步 163
5.6 本章小結 167

第6 章 數據庫 168
6.1 上傳發布 171
6.1.1 表結構設計規範 172
6.1.2 數據庫表結構的發布 172
6.1.3 SQL Server 的特殊之處 173
6.2 監控告警 176
6.2.1 數據庫大盤監控 176
6.2.2 運維數據庫OPDB 178
6.2.3 語句監控 179
6.3 數據庫高可用 187
6.3.1 SQL Server 高可用 188
6.3.2 MySQL 高可用 189
6.3.3 Redis 高可用架構 193
6.4 本章小結 194

第7 章 IaaS & PaaS 195
7.1 網絡架構演進 198
7.1.1 基於 VLAN 的二層網絡 198
7.1.2 基於VXLAN 的大二層SDN 網絡 200
7.1.3 基於BGP 的三層SDN 網絡 203
7.2 K8s 和容器化的實踐 207
7.2.1 部署架構 207
7.2.2 網絡 208
7.2.3 調度 209
7.2.4 存儲 212
7.2.5 監控 214
7.2.6 容器化 215
7.3 混合雲 217
7.3.1 混合雲整體設計 218
7.3.2 混合雲網絡& 安全 220
7.3.3 混合雲計費& 對賬 222
7.3.4 混合雲運維 224
7.4 持續交付 226
7.4.1 發布的藝術 226
7.4.2 Tars 系統設計 229
7.5 本章小結 232

第8 章 監控 233
8.1 指標監控和告警系統Hickwall 234
8.1.1 指標監控的應用和挑戰 235
8.1.2 指標模型的選擇 236
8.1.3 Hickwall 架構 238
8.2 開源分佈式應用監控系統CAT 241
8.2.1 為什麽需要應用監控系統 241
8.2.2 應用監控系統的特點 243
8.2.3 客戶端實現解析 245
8.2.4 存儲模型解析 247
8.3 公共日誌服務平臺CLog 250
8.3.1 日誌系統的演進與特點 251
8.3.2 CLog 的架構 252
8.4 告警系統 257
8.4.1 告警系統的需求特點 258
8.4.2 流式告警的實現和處理 259
8.5 本章小結 263

第9 章 網站高可用 264
9.1 可用性指標與度量 265
9.1.1 Ctrip ATP 266
9.1.2 Ctrip ATP 算法 266
9.1.3 Ctrip ATP 架構 267
9.1.4 訂單預測模型 268
9.2 服務熔斷、限流與降級 270
9.2.1 微服務架構下的可用性 271
9.2.2 熔斷、限流在攜程的落地 272
9.2.3 熔斷、限流的治理問題 274
9.3 災備數據中心 276
9.3.1 冷備模式 277
9.3.2 熱備模式 278
9.3.3 多活模式 278
9.4 網站單元化部署 281
9.4.1 單元化架構 282
9.4.2 單元化思路 283
9.5 基礎組件支持 285
9.5.1 路由調度 285
9.5.2 數據復制 287
9.6 全鏈路壓測 292
9.6.1 技術選型與系統設計 292
9.6.2 構造與隔離壓測數據 295
9.6.3 全鏈路監控設計 295
9.7 運維工具高可用 296
9.7.1 哪些運維工具需要實現高可用 296
9.7.2 工具的改造 297
9.7.3 定期故障演練 300
9.8 混沌工程 300
9.8.1 混沌工程的起源 301
9.8.2 混沌工程的5 條原則 301
9.8.3 如何進行一個混沌實驗 304
9.9 數據驅動運營 307
9.9.1 智能運維AIOps 308
9.9.2 AI 算法在運維領域的典型場景 309
9.9.3 運維數據倉庫 312
9.10 GNOC 314
9.11 本章小結 319