攜程架構實踐
  • 推薦0
  • 收藏0
  • 瀏覽168

攜程架構實踐

攜程計算機技術(上海)有限公司 (作者) 

  • 書  號:978-7-121-38439-4
  • 出版日期:2020-04-03
  • 頁  數:336
  • 開  本:16(170*240)
  • 出版狀態:上市銷售
  • 維護人:張慧敏
紙質版 ¥109.00
一個好的架構就像一個好的制度,我們不會時時刻刻感受到它的存在,但在關鍵時刻,它決定了系統能夠到達的高度。
本書濃縮了攜程公司的整個技術架構,可以幫助讀者了解支撐一家大型企業所需要的核心技術產品,以及它們的架構和面臨的挑戰。本書由攜程的一線研發工程師們精心編寫,他們對攜程各個領域的技術實踐了如指掌,本書所提到的各種系統離不開他們的耕耘。在給讀者呈現攜程架構實踐的同時,也希望本書能給讀者帶來一些警示和啟發,共同推動技術的進步。
不同領域的架構關注點各有側重,但是方法論是相通的。希望讀者通過本書了解攜程的架構實踐,拓寬視野,豐富自己的架構工具箱,在遇到難題時,看看其他領域的解決思路,就可能碰撞出意想不到的“火花”。
攜程集團執行副總裁張晨力薦,攜程架構技術十多年的精華提煉,從開發到運營,從組件到治理,多維度全方位展現了大型互聯網系統的完整架構
攜程技術團隊
作為攜程集團的核心競爭力,攜程技術團隊由近7000位來自海內外的精英工程師組成,為攜程集團業務的運作和開拓提供全面技術支持,并以技術創新源源不斷地為產品和服務創造價值。
技術從來都不是閉門造車,攜程技術團隊會一直以開放和充滿熱情的心態,通過各種渠道和方式,和圈內小伙伴們探討、交流、碰撞,共同收獲和成長。

序言
當今IT 技術的發展越來越快,更新換代可謂日新月異,讓從業者們應接不暇。然而,無論技術如何變化和發展,有些恒久而彌新的知識和能力,依然可以穩定地沉淀下來,它們跨越了不同的開發語言、不同的運行平臺,始終是我們關注的焦點。架構,在每年的技術大會上都是熱門的話題。架構的關鍵設計在很大程度上決定了一個系統的非功能屬性,如可用性、可擴展性和可維護性等。這也是我們如此重視架構的原因,一個好的架構就像一個好的制度,我們雖然不會時時刻刻感受到它的存在,但在關鍵時刻,它決定了系統能夠到達的高度。
現實的系統往往很復雜,很難表述,它包含了太多的細枝末節,以及未來的不斷變化。但優雅而簡潔的架構設計能在很大程度上將系統的精髓剝離和抽象出來,化繁為簡,以不變應萬變。無論什么時候,衡量一個系統的架構設計是否優秀的標準都是高可用、高性能、低成本和高擴展性,例如:在遇到各種突發網絡狀況,甚至單個機房發生故障時,系統是否依然穩定運行,高可用;在億萬量級訪問的高并發下,系統是否能在7×24 小時內一直穩定運行,是否能在毫秒級別依然準確而穩定地返回數據;如果業務訪問量超出預期、成倍增加,系統是否不需要修改大量代碼,只需要調整配置,擴容服務器,即可快速支持;如果業務需求快速變化,系統是否可以通過業務架構的良好擴展能力,無須大量改動代碼就能夠輕松應對……要想實現上述目標,完成一個優秀的架構設計,必須以架構師豐富的實戰經驗為依托。而在何種場景下采用何種架構設計,并真正解決問題,才是體現架構師能力的關鍵。所以,要想成為一名優秀的架構師,需要技術人員保持“空杯心態”,不斷地學習、交流、實踐,才能修成正果,這也是我們出版這本書的初衷。
從2016 年開始,我們持續在“攜程技術”微信公眾號發表相關文章,每年年底還會編輯成合輯,和大家分享攜程每年的技術成長和經驗積累。2019 年年初,電子工業出版社的編輯聯系我們,希望我們把這幾年的相關文章編撰成書以整體呈現攜程的技術架構,大家一拍即合,于是有了本書。
雖然介紹特定技術產品架構的文章很多,但能在一本書中將整個公司的技術架構濃縮是很難得的。本書可以幫助讀者了解支撐一家大型企業所需要的核心技術產品,以及它們的架構和面臨的挑戰。不同領域的架構關注點各有側重,但是方法論是相通的。希望讀者通過本書了解攜程的架構實踐,拓寬視野,豐富自己的架構工具箱,在遇到難題時,看看其他領域的解決思路,就可能碰撞出意想不到的“火花”。
攜程技術副總裁 李小林

前言
重回首,去時年,攬盡風雨苦亦甜。不知不覺,攜程已經走過了20 多年的歷程。多年來,攜程不斷地深耕在線旅游(OTA)行業,力求為用戶提供更加多元、舒適的服務。時至今日,作為國內優秀的OTA 企業,攜程正逐漸成為推動全球旅游行業發展的中堅力量。
與眾不同的業務基因,決定了攜程必須走出一條適合自身發展的技術道路。隨著攜程業務規模的快速擴張,其技術體系也在持續沉淀。技術領域沒有銀彈,技術體系必然會隨著業務需求的變更而不斷演進,并且在演進過程中,每一次成功或失敗所積累的經驗教訓都會在下一次實踐過程中得到體現。本書將從流量接入層、后端系統和技術保障三方面出發,介紹攜程在各個技術領域的最新實踐及相關思考。
第一部分主要介紹流量接入層。流量接入層是用戶使用攜程服務的入口,直接影響用戶的服務體驗。這部分首先介紹攜程在前端技術領域,尤其是移動開發框架與周邊設施的實踐方案;然后闡述如何通過提升網絡層訪問的性能和質量,來進一步改善用戶體驗;最后解析攜程優質服務的核心系統——呼叫中心是如何構建的。
第二部分主要介紹后端系統??煽康暮蠖讼到y是處理海量用戶請求的關鍵,其主要特征包括高可用、高并發、高性能。這部分從分布式消息隊列、微服務、配置中心等核心中間件入手,剖析攜程在框架中間件體系建設過程中遇到的一系列難題及其應對措施。同時針對如何構建高效、可靠的數據訪問層及存儲體系等,與讀者進行深入探討。
第三部分主要介紹技術保障。產品從立項到研發、測試、上線,再到運行時的監控、彈性擴縮容,其生命周期的每一個階段都需要完善的技術保障支持。這部分涵蓋了持續集成、監控告警及多數據中心架構等內容,以及攜程如何在持續提升研發效率的同時,降低甚至避免快速迭代對網站可用性產生的負面影響。中國抓住了信息革命的機遇,造就了很多世界級的互聯網公司,也擁有了眾多互聯網領域的“獨角獸”,但市場上還沒有能夠全面介紹一家公司的完整技術體系的書籍,本書的初衷正在于此。我們從一線研發工程師中遴選出本書的作者團隊,將架構演進過程中遇到的挑戰、走過的彎路及最新的實踐方案編撰成書,在給讀者呈現攜程技術架構體系的同時,也希望給讀者帶來一些啟發,共同推動技術進步。
我們并不完美,但我們心懷敬畏。愿各位永葆對技術的憧憬與熱忱。
《攜程架構實踐》編委會

目錄

第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

讀者評論

十一选五开奖结果云