Service Mesh微服務架構設計( 簡體 字) | |
作者:劉俊海 | 類別:1. -> 程式設計 -> 綜合 |
出版社:機械工業出版社 | 3dWoo書號: 51862 詢問書籍請說出此書號! 有庫存 NT售價: 445 元 |
出版日:9/1/2019 | |
頁數:236 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787111636847 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
前言
第一篇 基 礎 篇 第1章 微服務架構 …… 2 1.1 為什么需要微服務 …… 2 1.1.1 傳統單體服務的問題 …… 2 1.1.2 微服務的定義 …… 3 1.1.3 微服務與康威定律 …… 3 1.1.4 微服務的收益 …… 4 1.2 微服務架構的挑戰 …… 4 1.2.1 服務拆分 …… 4 1.2.2 開發挑戰 …… 5 1.2.3 測試挑戰 …… 5 1.2.4 運維挑戰 …… 6 1.3 微服務化的具體時機 …… 6 1.4 微服務化開展前的準備工作 …… 8 1.4.1 微服務開發框架 …… 8 1.4.2 微服務標準化 …… 15 1.4.3 持續集成與發布 …… 17 1.5 微服務實施 …… 17 1.5.1 微服務拆分 …… 17 1.5.2 微服務通信 …… 19 1.5.3 微服務穩定性保障 …… 20 1.6 本章小結 …… 25 第2章 微服務治理 …… 26 2.1 微服務治理基礎 …… 26 2.1.1 服務治理由來 …… 26 2.1.2 服務治理的目標與愿景 …… 27 2.1.3 服務治理的工作范疇 …… 28 2.1.4 服務治理閉環體系 …… 29 2.2 正向服務治理 …… 29 2.2.1 效率治理 …… 30 2.2.2 穩定性治理 …… 31 2.3 效果治理 …… 34 2.4 可見可觀測 …… 35 2.4.1 服務可見性 …… 35 2.4.2 變更可見性 …… 36 2.4.3 可觀測性 …… 36 2.5 量化分析體系 …… 41 2.5.1 穩定性風險度量 …… 41 2.5.2 基于多維度監控的故障定位 …… 42 2.5.3 風險分析 …… 43 2.6 線上治理 …… 43 2.6.1 線上預案體系 …… 43 2.6.2 基于Metric的預案自動觸發 …… 44 2.6.3 治理參數動態調整 …… 44 2.7 線下治理 …… 47 2.7.1 鏈路穩定性治理 …… 47 2.7.2 架構與資源治理 …… 50 2.8 服務治理演進 …… 50 2.8.1 遠程Proxy方式 …… 51 2.8.2 基于智能客戶端的服務框架 …… 52 2.8.3 本地Proxy …… 52 2.9 理想的服務治理架構 …… 53 2.10 本章小結 …… 54 第3章 下一代微服務框架Service Mesh概要 …… 55 3.1 Service Mesh基礎 …… 55 3.1.1 什么是Service Mesh …… 55 3.1.2 Service Mesh的基本模式 …… 56 3.2 Service Mesh的發展歷程 …… 58 3.3 Service Mesh項目Linkerd …… 60 3.3.1 Linkerd演進 …… 60 3.3.2 Linkerd路由機制 …… 62 3.3.3 Linkerd 2.0核心架構 …… 63 3.4 Service Mesh項目Istio …… 64 3.4.1 Envoy …… 64 3.4.2 Istio …… 66 3.5 Service Mesh其他解決方案 …… 67 3.5.1 國外其他Service Mesh項目 …… 67 3.5.2 Service Mesh在中國的發展 …… 68 3.6 Service Mesh云上產品 …… 69 3.6.1 AWS App Mesh …… 69 3.6.2 Azure Service Fabric Mesh …… 69 3.6.3 Google Cloud Service Mesh …… 70 3.6.4 SuperGloo …… 70 3.7 Service Mesh標準化 …… 71 3.8 本章小結 …… 71 第二篇 架 構 篇 第4章 Envoy架構剖析 …… 74 4.1 Envoy整體架構 …… 74 4.1.1 關鍵設計約束 …… 74 4.1.2 設計原則 …… 75 4.1.3 整體架構 …… 76 4.2 Envoy網絡模型 …… 78 4.2.1 Envoy事件調度模型 …… 78 4.2.2 Envoy線程模型 …… 81 4.2.3 線程本地存儲機制 …… 81 4.3 Envoy擴展模型 …… 84 4.3.1 插件擴展機制 …… 84 4.3.2 網絡相關插件 …… 86 4.3.3 其他擴展插件 …… 88 4.4 Envoy數據平面API …… 88 4.4.1 XDS協議語義 …… 88 4.4.2 XDS協議通信 …… 90 4.5 Envoy啟動管理 …… 91 4.5.1 正常啟動 …… 92 4.5.2 熱重啟 …… 94 4.6 Envoy與Nginx架構層面的對比 …… 95 4.6.1 功能與定位 …… 96 4.6.2 網絡模型 …… 96 4.6.3 連接處理 …… 97 4.6.4 插件機制 …… 98 4.6.5 配置管理 …… 99 4.6.6 內存管理 …… 99 4.6.7 部署與運維 …… 100 4.6.8 觀測與診斷 …… 100 4.7 本章小結 …… 100 第5章 Istio架構剖析 …… 101 5.1 Istio整體架構 …… 101 5.1.1 數據平面組件 …… 102 5.1.2 控制平面組件 …… 103 5.2 Istio的Kubernetes基礎 …… 104 5.2.1 Kubernetes綜述 …… 104 5.2.2 Kubernetes網絡訪問模型 …… 107 5.2.3 Kubernetes API管理 …… 110 5.2.4 Istio與Kubernetes的相互關系 …… 111 5.3 Istio流量控制模型 …… 112 5.3.1 流量管理API …… 112 5.3.2 Istio Mesh模型 …… 116 5.4 Mixer模型 …… 118 5.4.1 Mixer基本概念 …… 119 5.4.2 Mixer通用配置模型 …… 119 5.4.3 Mixer架構演進以及對性能的影響 …… 121 5.5 Istio安全 …… 122 5.5.1 Istio安全基礎 …… 122 5.5.2 Istio認證架構 …… 123 5.6 Istio配置處理框架 …… 124 5.6.1 配置驗證 …… 125 5.6.2 配置變更處理和分發 …… 125 5.7 本章小結 …… 125 第6章 Istio控制流設計 …… 126 6.1 Envoy生命周期管理 …… 126 6.1.1 Envoy注入 …… 126 6.1.2 Envoy啟動管理 …… 128 6.1.3 Envoy配置和運行狀態監控 …… 131 6.2 Istio配置變更管理 …… 133 6.2.1 通用模型和機制 …… 133 6.2.2 Kubernetes具體實現 …… 137 6.3 控制平面和數據平面的XDS交互 …… 138 6.3.1 控制平面的gRPC Server啟動 …… 139 6.3.2 Envoy的XDS請求 …… 140 6.3.3 Istio XDS配置下發 …… 140 6.3.4 Envoy的XDS消息接收 …… 143 6.4 XDS配置生成 …… 143 6.4.1 可見性 …… 143 6.4.2 配置生成機制 …… 145 6.4.3 XDS配置生成實現 …… 147 6.5 XDS配置的Envoy處理 …… 149 6.5.1 XDS配置變更的判斷 …… 149 6.5.2 CDS配置的延遲處理 …… 150 6.5.3 集群和節點配置處理 …… 152 6.5.4 路由配置處理 …… 153 6.5.5 監聽器配置處理 …… 153 6.6 本章小結 …… 155 第7章 Istio數據流設計 …… 156 7.1 Iptables …… 156 7.1.1 Iptables的基本原理 …… 156 7.1.2 Iptables在Istio中的使用 …… 158 7.2 監聽管理 …… 158 7.2.1 監聽器建立 …… 158 7.2.2 監聽器和工作線程綁定 …… 159 7.3 連接管理 …… 160 7.3.1 監聽器匹配 …… 160 7.3.2 協議過濾器匹配 …… 161 7.3.3 創建新連接 …… 161 7.4 網絡I/O和緩沖區管理 …… 162 7.4.1 傳輸層數據讀取 …… 162 7.4.2 插件處理 …… 163 7.5 Thrift協議處理 …… 164 7.5.1 Thrift插件的整體架構 …… 164 7.5.2 協議解析 …… 165 7.5.3 協議相關的插件機制 …… 166 7.6 HTTP請求處理 …… 168 7.6.1 HTTP請求處理流程 …… 168 7.6.2 協議解析 …… 169 7.6.3 路由管理 …… 171 7.6.4 HTTP過濾鏈處理 …… 174 7.6.5 負載均衡 …… 176 7.6.6 連接池實現 …… 179 7.7 本章小結 …… 182 第8章 Istio微服務治理 …… 183 8.1 鏈路穩定性治理 …… 183 8.1.1 超時機制 …… 183 8.1.2 重試機制和重試策略 …… 185 8.1.3 節點熔斷和健康檢查機制 …… 188 8.1.4 資源限制機制 …… 189 8.1.5 全局限流機制 …… 190 8.2 鏈路可觀測性 …… 190 8.2.1 Envoy分布式跟蹤支持 …… 190 8.2.2 Envoy Metric支持 …… 194 8.2.3 Envoy Log支持 …… 198 8.3 本章小結 …… 200 第9章 Service Mesh架構的工程化設計 …… 201 9.1 復用和解耦 …… 201 9.2 架構擴展機制 …… 203 9.2.1 服務注冊中心插件機制 …… 203 9.2.2 Envoy Filter插件機制 …… 203 9.3 性能設計 …… 204 9.3.1 基于TLS的無鎖設計 …… 204 9.3.2 多級緩存機制 …… 205 9.3.3 批量更新機制 …… 205 9.4 架構設計的權衡 …… 206 9.5 API和SDK設計 …… 207 9.5.1 聲明式API設計 …… 207 9.5.2 代碼自動生成機制 …… 207 9.6 配置管理 …… 208 9.6.1 基于Protobuf 3的配置Scheme描述 …… 208 9.6.2 配置動態加載機制 …… 210 9.7 本章小結 …… 210 第10章 Service Mesh與云原生架構 …… 211 10.1 Service Mesh和Serverless …… 211 10.1.1 Serverless基礎 …… 211 10.1.2 Knative …… 213 10.2 東西向和南北向通信的統一 …… 215 10.3 云原生時代的Service Mesh …… 216 10.4 Service Mesh現狀和展望 …… 217 10.5 本章小結 …… 218 附錄 Service Mesh遷移的要點與原則 …… 219 資深架構師撰寫,從設計與工程化視角分析Service Mesh,穿插大量一線實踐真知灼見,涵蓋微服務實施細則、Istio/Envoy的架構設計與實現、Service Mesh工程化設計思想與發展趨勢等。本書分為兩篇,共計10章內容。
基礎篇(第1~3章),著重講解微服務架構和治理,以及Service Mesh技術當前的現狀。 本篇幫讀者厘清微服務架構的實施前準備,實施風險與痛點/難點問題,并引出應對微服務通信與服務治理問題的方案——Service Mesh,闡述Service Mesh生態的各個方面,包括Service Mesh的價值與企業需求的內在動因。 架構篇(第4~10章),深入剖析Service Mesh主流方案Istio/Envoy在架構設計層面的原理和實現,以及Service Mesh技術展望。其中第4~7章為重點章節,建議讀者認真研讀與實踐。 第4章詳細分析Envoy的整體架構,并就架構設計層面與Nginx進行全方位對比分析。 第5章分析Istio的整體架構以及各個組件的功能和設計。 第6~7章分別從控制流與數據流的角度,分析請求的處理策略與配置以及在整個Service Mesh中的流向和處理。 后續章節分別討論Istio的服務治理(聚焦可觀測性、鏈路治理),Service Mesh的架構思想的工程化應用,以及Service Mesh技術在云原生架構下的發展暢想。 微服務近幾年一直是架構領域的技術熱點,但是從來就沒有“銀彈”。微服務帶來各種便利的同時,也導致服務間通信面臨服務發現、連接管理、流量控制、通信安全、熔斷降級等諸多問題,因此Service Mesh應運而生。Service Mesh作為一套標準化的微服務通信和服務治理解決方案,可以: 屏蔽不同語言、不同技術棧的差異; 將復雜的通信需求與業務代碼解耦; 對業務透明,讓業務人員可以聚焦功能需求。 打開本書,開啟一場別開生面的Service Mesh之旅! 本書以微服務架構演進為視角徐徐展開,鏡頭掃過微服務實施相關的各種關鍵節點,接下來看到的是微服務治理和Service Mesh,以更開闊的視角呈現;隨鏡頭拉近,我們看到了Istio/Envoy架構、控制流設計、微服務治理的各種細節;鏡頭再次拉高,我們看到了Service Mesh的工程化和云原生環境下與各種技術的協作關系。至此,一次Service Mesh的游覽之旅接近尾聲。如果您意猶未盡,不妨將本書作為案頭書,邊看邊實踐! 為什么要寫這本書
作為新一代微服務架構,Service Mesh技術有效地解決了當前微服務架構和治理過程中的痛點問題,一經推出便引起很大的反響,近兩年持續成為架構領域的熱點。特別是Google聯合Lyft等公司推出的Istio,架構優雅、功能強大,迅速成為Service Mesh領域的明星項目。我非常看好Istio在微服務領域的價值,一直持續關注著這個項目,我發現在Service Mesh或者微服務技術領域,已有的書籍和資料大多關注具體語言棧和具體技術的使用,而真正聚焦架構設計方面的書則偏少,因此想從架構設計方面對Service Mesh進行深入剖析。 本書從微服務架構和治理角度出發,聚焦Service Mesh的架構設計,試圖從微服務技術演進的視角,全面揭開Service Mesh技術神秘的面紗。 讀者對象 業務架構師 業務開發和運維人員 云計算基礎設施開發者、架構師 對微服務技術感興趣的人員 對云原生架構感興趣的人員 如何閱讀本書 本書分為兩篇,共計10章。 基礎篇(第1~3章),本篇著重講解微服務架構和治理,以及Service Mesh技術當前的現狀。 第1章為微服務架構,聚焦微服務實施的時機、準備工作和具體實施等; 第2章為微服務治理,通過服務治理解決引入微服務后帶來的一系列挑戰; 第3章為Service Mesh概述,講述為什么Service Mesh能夠解決微服務治理中的痛點問題,以及Service Mesh的發展歷程和當前現狀。 架構篇(第4~10章),本篇深入剖析Istio/Envoy在架構設計層面的原理和實現,以及Service Mesh未來展望。 第4章詳細分析Envoy的整體架構,并且就架構設計層面與Nginx進行全方位的對比分析; 第5章分析Istio的整體架構以及各個組件的功能和設計; 第6章和第7章分別從控制流與數據流的角度,分析請求的處理策略與配置以及在整個Service Mesh中的流向和處理; 第8章討論Istio的服務治理,重點聚焦可觀測性和鏈路治理; 第9章討論如何將Service Mesh中的一些架構思想和設計運用到平常的工程架構中去。 第10章展望Service Mesh技術在云原生架構下的未來和發展。 其中,第4~7章為本書的重點章節,如果你沒有充足的時間完成全書的閱讀,可以選擇閱讀重點章節。如果你是有著一定經驗的資深人員,本書會是一本不錯的案頭書。 勘誤和支持 由于筆者的水平有限,編寫時間倉促,書中難免會出現一些錯誤或者不準確的地方,懇請讀者批評指正。可以通過微信號cloudnative_techdev,或者郵箱junhai0909@qq.com聯系到我。期待能夠得到大家的真摯反饋,在技術之路上互勉共進。 致謝 感謝百度謝廣軍、孫曉,滴滴出行盧紅波、王正克、姜泰旭、段俊偉、奚媛,好未來張國輝、陳雷、韓天峰在工作和技術上無微不至的指導,我的成長離不開各位的大力支持和栽培。 感謝ServiceMesher技術社區的全體同仁,特別是ServiceMesher技術社區的組織者,是他們通過大量技術布道,最早將Service Mesh技術引入國內,對國內Service Mesh技術發展做出了很大貢獻。 特別致謝 最后,我要特別感謝太太劉敏和兒子,為寫作這本書我犧牲了很多陪伴他們的時間,也正因為有他們的付出與支持,我才能堅持寫下去。 同時,感謝我的父母和岳父母,有了他們的幫助和支持,我才有時間和精力去完成寫作工作。 最后要重點感謝高婧雅編輯,得益于她的耐心審稿、寶貴的建議以及用心的修改,本書的質量才進一步得到提升。 謹以此書獻給我最親愛的家人,以及眾多熱愛微服務技術和Service Mesh技術的朋友們! 劉俊海 |