会员   密码 您忘记密码了吗?
1,573,436 本书已上架      购物流程 | 常见问题 | 联系我们 | 关于我们 | 用户协议

有店 App


当前分类

商品分类

浏览历史

当前位置: 首页 > 简体书 > 雲原生服務網格Istio:原理、實踐、架構與源碼解析
雲原生服務網格Istio:原理、實踐、架構與源碼解析
上一张
下一张
prev next

雲原生服務網格Istio:原理、實踐、架構與源碼解析

作者: 張超盟
出版社: 電子工業出版社
出版日期: 2019-07-01
商品库存: 点击查询库存
以上库存为海外库存属流动性。
可选择“空运”或“海运”配送,空运费每件商品是RM14。
配送时间:空运约8~12个工作天,海运约30个工作天。
(以上预计配送时间不包括出版社库存不足需调货及尚未出版的新品)
定价:   NT834.00
市场价格: RM149.93
本店售价: RM133.44
促销价: RM131.94
剩余时间: 请稍等, 正在载入中...
购买数量:
collect Add to cart Add booking
详细介绍 商品属性 商品标记
內容簡介

本書分為原理篇、實踐篇、架構篇和源碼篇,由淺入深地將Istio項目庖丁解牛並呈現給讀者。原理篇介紹了服務網格技術與Istio專案的技術背景、設計理念與功能原理,能夠説明讀者瞭解服務網格這一雲原生領域的標誌性技術,掌握Istio流量治理、策略與遙測和安全功能的使用方法。

實踐篇從零開始搭建Istio運行環境並完成一個真實應用的開發、交付、上線監控與治理的完整過程,能夠幫助讀者熟悉Istio的功能並加深對Istio的理解。架構篇剖析了Istio專案的三大核心子專案Pilot、Mixer、Citadel的詳細架構,幫助讀者熟悉Envoy、Galley、Pilot-agent等相關專案,並挖掘Istio代碼背後的設計與實現思想。源碼篇對Istio各個專案的代碼結構、檔組織、核心流程、主要資料結構及各主要代碼片段等關鍵內容都進行了詳細介紹,讀者只需具備一定的Go語言基礎,便可快速掌握Istio各部分的實現原理,並根據自己的興趣深入瞭解某一關鍵機制的完整實現。


作者介紹

張超盟
華為雲應用服務網格首席架構師,擁有10年以上軟體研發經驗,先後負責華為雲PaaS容器應用運維、微服務平臺、雲服務目錄、服務網格等產品架構設計與開發工作,在容器服務、微服務架構、大資料、應用性能管理、資料庫中介軟體及DevOps工具等多個領域有深入的研究與實踐。開源愛好者,Istio社區成員。曾就職於TrendMicro和中鐵一局。
 
章鑫
華為雲應用服務網格首席系統工程師, 擁有10年以上IT從業經驗,先後參與華為雲PaaS運維平臺、容器自動化運維工 具、服務網格等產品設計與開發,主導了多個服務網格專案的落地與實施工作。Istio社區成員,對於Pilot、Mixer等多個元件 的 調 優 有 豐 富 的 經 驗。曾 在VIA-Telecom和Nokia擔任研發專家。
 
徐中虎
華為雲原生開源團隊核心成員,Istio社區Approver,Kubernetes專案核心貢獻者,現 聚 焦 於Cloud Native、Docker、Kubernetes、Service Mesh等領域,對分散式系統性能優化、高可靠、可擴展等有深入的研究。曾就職于網易、Nokia。
 
徐飛
華為雲原生開源團隊核心成員,Istio社區Approver,Kubernetes、Federation、Kubeflow、Virtual-Kubelet社區項目成員及核心貢獻者,浙江大學碩士。從2015年開始參與容器平臺的設計與開發,並參與上游社區的貢獻。
 
華為雲原生團隊
華為雲原生團隊創建於2013年,是國內較早參與雲原生這一技術領域的團隊之一。作為CNCF(雲原生計算基金會)的初創成員和白金會員,華為在容器、服務網格、微服務等雲原生技術領域都有著深厚的造詣,擁有10多名CNCF開源項目維護者,在Kubernetes、Istio等核心開源項目上的貢獻位居全球前列。華為雲也提供了基於CNCF開源項目所打造的商業化雲原生系列產品,包括雲容器引擎、雲容器實例、應用服務網格、容器交付流水線等。
華為雲原生團隊致力於雲原生技術在國內的普及與推廣,通過“容器魔方”官方微信公眾號,以及與CNCF聯合打造的CloudNative Days China(CNDC)Meetup、Cloud Native Lives雲原生技術線上直播、線下CKA培訓等活動,推動了國內雲原生技術的學習與交流熱潮。此次打造的華為雲原生技術叢書,內容涵蓋以CNCF專案為主的多個雲原生技術熱點,可為廣大雲原生技術愛好者提供詳盡、專業、及時的原理講解與技術剖析。
 


目錄

作者:原 理 篇
 
第1章  你好,Istio. 2
1.1  Istio是什麼... 2
1.2  通過示例看看Istio能做什麼... 4
1.3  Istio與服務治理... 6
1.3.1  關於微服務... 6
1.3.2  服務治理的三種形態... 8
1.3.3  Istio不只解決了微服務問題... 10
1.4  Istio與服務網格... 11
1.4.1  時代選擇服務網格... 11
1.4.2  服務網格選擇Istio. 14
1.5  Istio與Kubernetes 15
1.5.1  Istio,Kubernetes的好幫手... 16
1.5.2  Kubernetes,Istio的好基座... 18
1.6  本章總結... 20

第2章  Istio架構概述... 21
2.1  Istio的工作機制... 21
2.2  Istio的服務模型... 23
2.2.1  Istio的服務... 24
2.2.2  Istio的服務版本... 26
2.2.3  Istio的服務實例... 28
2.3  Istio的主要組件... 30
2.3.1  istio-pilot 30
2.3.2  istio-telemetry. 32
2.3.3  istio-policy. 33
2.3.4  istio-citadel 34
2.3.5  istio-galley. 34
2.3.6  istio-sidecar-injector 35
2.3.7  istio-proxy. 35
2.3.8  istio-ingressgateway. 36
2.3.9  其他組件... 37
2.4  本章總結... 37

第3章  非侵入的流量治理... 38
3.1  Istio流量治理的原理... 38
3.1.1  負載均衡... 39
3.1.2  服務熔斷... 41
3.1.3  故障注入... 48
3.1.4  灰度發佈... 49
3.1.5  服務訪問入口... 54
3.1.6  外部接入服務治理... 56
3.2  Istio路由規則配置:VirtualService. 59
3.2.1  路由規則配置示例... 59
3.2.2  路由規則定義... 60
3.2.3  HTTP路由(HTTPRoute)... 63
3.2.4  TLS路由(TLSRoute)... 78
3.2.5  TCP路由(TCPRoute)... 81
3.2.6  三種協定路由規則的對比... 83
3.2.7  VirtualService的典型應用... 84
3.3  Istio目標規則配置:DestinationRule. 89
3.3.1  DestinationRule配置示例... 90
3.3.2  DestinationRule規則定義... 90
3.3.3  DestinationRule的典型應用.... 103
3.4  Istio服務閘道配置:Gateway. 107
3.4.1  Gateway配置示例... 108
3.4.2  Gateway規則定義... 109
3.4.3  Gateway的典型應用... 112
3.5  Istio外部服務配置:ServiceEntry. 120
3.5.1  ServiceEntry配置示例... 120
3.5.2  ServiceEntry規則的定義和用法... 121
3.5.3  ServiceEntry的典型應用... 123
3.6  Istio代理規則配置:Sidecar 126
3.6.1  Sidecar配置示例... 126
3.6.2  Sidecar規則定義... 126
3.7  本章總結... 129

第4章  可擴展的策略和遙測... 131
4.1  Istio策略和遙測的原理... 131
4.1.1  應用場景... 131
4.1.2  工作原理... 136
4.1.3  屬性... 137
4.1.4  Mixer的配置模型... 140
4.2  Istio遙測適配器配置... 147
4.2.1  Prometheus適配器... 148
4.2.2  Fluentd適配器... 155
4.2.3  StatsD適配器... 159
4.2.4  Stdio適配器... 161
4.2.5  Zipkin適配器... 163
4.2.6  廠商適配器... 168
4.3  Istio策略適配器配置... 169
4.3.1  List適配器... 169
4.3.2  Denier適配器... 171
4.3.3  Memory Quota適配器... 172
4.3.4  Redis Quota適配器.... 175
4.4  Kubernetes Env適配器配置... 178
4.5  本章總結... 181

第5章  可插拔的服務安全... 182
5.1  Istio服務安全的原理... 182
5.1.1  認證... 185
5.1.2  授權... 189
5.1.3  金鑰委付管理... 192
5.2  Istio服務認證配置... 193
5.2.1  認證策略配置示例... 193
5.2.2  認證策略的定義... 194
5.2.3  TLS訪問配置... 196
5.2.4  認證策略的典型應用... 200
5.3  Istio服務授權配置... 202
5.3.1  授權啟用配置... 202
5.3.2  授權策略配置... 203
5.3.3  授權策略的典型應用... 207
5.4  本章總結... 210

第6章  透明的Sidecar機制... 211
6.1  Sidecar注入... 211
6.1.1  Sidecar Injector自動注入的原理... 214
6.1.2  Sidecar注入的實現... 216
6.2  Sidecar流量攔截... 219
6.2.1  iptables的基本原理... 220
6.2.2  iptables的規則設置... 223
6.2.3  流量攔截原理... 224
6.3  本章總結... 228

第7章  多集群服務治理... 230
7.1  Istio多集群服務治理... 230
7.1.1  Istio多集群的相關概念... 230
7.1.2  Istio多集群服務治理現狀... 231
7.2  多集群模式1:多控制面... 232
7.2.1  服務DNS解析的原理... 233
7.2.2  Gateway連接的原理... 237
7.3  多集群模式2:VPN直連單控制面... 238
7.4  多集群模式3:集群感知服務路由單控制面... 240
7.5  本章總結... 246
 
實 踐 篇
 
第8章  環境準備... 248
8.1  在本地搭建Istio環境... 248
8.1.1  安裝Kubernetes集群... 248
8.1.2  安裝Helm.. 249
8.1.3  安裝Istio. 250
8.2  在公有雲上使用Istio. 253
8.3  嘗鮮Istio命令列... 255
8.4  應用示例... 257
8.4.1  Weather Forecast簡介... 257
8.4.2  Weather Forecast部署... 258
8.5  本章總結... 259

第9章  流量監控... 260
9.1  預先準備:安裝外掛程式... 260
9.2  調用鏈跟蹤... 261
9.3  指標監控... 265
9.3.1  Prometheus. 265
9.3.2  Grafana. 268
9.4  服務網格監控... 273
9.5  本章總結... 277

第10章  灰度發佈... 278
10.1  預先準備:將所有流量都路由到各個服務的v1版本... 278
10.2  基於流量比例的路由... 279
10.3  基於請求內容的路由... 283
10.4  組合條件路由... 284
10.5  多服務灰度發佈... 286
10.6  TCP服務灰度發佈... 288
10.7  自動化灰度發佈... 290
10.7.1  正常發佈... 291
10.7.2  異常發佈... 294

第11章  流量治理... 296
11.1  流量負載均衡... 296
11.1.1  ROUND_ROBIN模式... 296
11.1.2  RANDOM模式... 298
11.2  會話保持... 299
11.2.1  實戰目標... 300
11.2.2  實戰演練... 300
11.3  故障注入... 301
11.3.1  延遲注入... 301
11.3.2  中斷注入... 303
11.4  超時... 304
11.5  重試... 306
11.6  HTTP重定向... 308
11.7  HTTP重寫... 309
11.8  熔斷... 310
11.9  限流... 313
11.9.1  普通方式... 314
11.9.2  條件方式.... 315
11.10  服務隔離... 317
11.10.1  實戰目標... 317
11.10.2  實戰演練... 317
11.11  影子測試... 319
11.12  本章總結... 322

第12章  服務保護... 323
12.1  閘道加密... 323
12.1.1  單向TLS閘道... 323
12.1.2  雙向TLS閘道... 326
12.1.3  用SDS加密閘道... 328
12.2  存取控制... 331
12.2.1  黑名單... 331
12.2.2  白名單... 332
12.3  認證... 334
12.3.1  實戰目標... 334
12.3.2  實戰演練... 334
12.4  授權... 336
12.4.1  命名空間級別的存取控制... 336
12.4.2  服務級別的存取控制... 339
12.5  本章總結... 341

第13章  多集群管理... 342
13.1  實戰目標... 342
13.2  實戰演練... 342
13.3  本章總結... 350
 
架 構 篇
 
第14章  司令官Pilot 352
14.1  Pilot的架構... 352
14.1.1  Istio的服務模型... 354
14.1.2  xDS協議... 356
14.2  Pilot的工作流程... 360
14.2.1  Pilot的啟動與初始化... 361
14.2.2  服務發現... 363
14.2.3  配置規則發現... 368
14.2.4  Envoy的配置分發... 376
14.3  Pilot的外掛程式... 383
14.3.1  安全外掛程式... 385
14.3.2  健康檢查外掛程式... 390
14.3.3  Mixer外掛程式... 391
14.4  Pilot的設計亮點... 392
14.4.1  三級緩存優化... 392
14.4.2  去抖動分發... 393
14.4.3  增量EDS. 394
14.4.4  資源隔離... 395
14.5  本章總結... 396

第15章  守護神Mixer 397
15.1  Mixer的整體架構... 397
15.2  Mixer的服務模型... 398
15.2.1  Template. 399
15.2.2  Adapter 401
15.3  Mixer的工作流程... 403
15.3.1  啟動初始化... 403
15.3.2  使用者配置資訊規則處理... 409
15.3.3  訪問策略的執行... 416
15.3.4  無侵入遙測... 421
15.4  Mixer的設計亮點... 423
15.5  如何開發MixerAdapter 424
15.5.1  Adapter實現概述... 424
15.5.2  內置式Adapter的開發步驟... 425
15.5.3  獨立進程式Adapter的開發步驟... 430
15.5.4  獨立倉庫式Adapter的開發步驟... 437
15.6  本章總結... 438

第16章  安全碉堡Citadel 439
16.1  Citadel的架構... 439
16.2  Citadel的工作流程... 441
16.2.1  啟動初始化... 441
16.2.2  證書控制器... 442
16.2.3  gRPC伺服器... 444
16.2.4  證書輪換器... 445
16.2.5  SDS伺服器... 446
16.3  本章總結... 449

第17章  高性能代理Envoy. 450
17.1  Envoy的架構... 450
17.2  Envoy的特性... 451
17.3  Envoy的模組結構... 452
17.4  Envoy的執行緒模型... 453
17.5  Envoy的記憶體管理... 455
17.5.1  變數管理... 455
17.5.2  Buffer管理... 456
17.6  Envoy的流量控制... 456
17.7  Envoy與Istio的配合... 457
17.7.1  部署與交互... 457
17.7.2  Envoy API 458
17.3  本章總結... 459

第18章  代理守護進程Pilot-agent 460
18.1  為什麼需要Pilot-agent 461
18.2  Pilot-agent的工作流程... 461
18.2.1  Envoy的啟動... 462
18.2.2  Envoy的熱重啟... 465
18.2.3  守護Envoy. 466
18.2.4  優雅退出... 467
18.3  本章總結... 468

第19章  配置中心Galley. 469
19.1  Galley的架構... 469
19.1.1  MCP. 470
19.1.2  MCP API 470
19.2  Galley的工作流程... 471
19.2.1  啟動初始化... 471
19.2.2  配置校驗... 476
19.2.3  配置聚合與分發... 479
19.3  本章總結... 482
 
源 碼 篇
 
第20章  Pilot源碼解析... 484
20.1  進程啟動流程... 484
20.2  關鍵代碼分析... 486
20.2.1  ConfigController 486
20.2.2  ServiceController 490
20.2.3  xDS非同步分發... 495
20.2.4  配置更新預處理... 503
20.2.5  xDS配置的生成及分發... 509
20.3  本章總結... 514
 
第21章  Mixer源碼解析... 515
21.1  進程啟動流程... 515
21.1.1  runServer通過newServer新建Server對象... 517
21.1.2  啟動Mixer gRPC Server 520
21.2  關鍵代碼分析... 520
21.2.1  監聽使用者的配置... 520
21.2.2  構建資料模型... 524
21.2.3  Check介面... 533
21.2.4  Report介面... 536
21.2.5  請求分發... 539
21.2.6  協程池... 541
21.3  本章總結... 543

第22章  Citadel源碼解析... 544
22.1  進程啟動流程... 544
22.2  關鍵代碼分析... 548
22.2.1  證書簽發實體IstioCA.. 548
22.2.2  SecretController的創建和核心原理... 551
22.2.3  CA Server的創建和核心原理... 556
22.3  本章總結... 558

第23章  Envoy源碼解析... 559
23.1  Envoy的初始化... 559
23.1.1  啟動參數bootstrap的初始化... 559
23.1.2  Admin API的初始化... 560
23.1.3  Worker的初始化... 562
23.1.4  CDS的初始化... 562
23.1.5  LDS的初始化... 563
23.1.6  GuardDog的初始化... 564
23.2  Envoy的運行和建立新連接... 564
23.2.1  啟動worker 565
23.2.2  Listener的載入... 565
23.2.3  接收連接... 566
23.3  Envoy對資料的讀取、接收及處理... 567
23.3.1  讀取數據... 568
23.3.2  接收資料... 568
23.3.3  處理資料... 569
23.4  Envoy發送資料到服務端... 570
23.4.1  匹配路由... 571
23.4.2  獲取連接池... 572
23.4.3  選擇上游主機... 572
23.5  本章總結... 573

第24章  Galley源碼解析... 574
24.1  進程啟動流程... 574
24.1.1  RunServer的啟動流程... 577
24.1.2  RunValidation Server的啟動流程... 578
24.2  關鍵代碼分析... 580
24.2.1  配置校驗... 580
24.2.2  配置監聽... 584
24.2.3  配置分發... 585
24.3  本章總結... 589

結語... 590
附錄A  源碼倉庫介紹... 592
附錄B  實踐經驗和總結... 598