您好,欢迎来到聚文网。 登录 免费注册
云原生服务网格ISTIO:原理.实践.架构与源码解析

云原生服务网格ISTIO:原理.实践.架构与源码解析

  • 字数: 810000
  • 装帧: 简装
  • 出版社: 电子工业出版社
  • 作者: 张超盟[等]编著
  • 出版日期: 2019-07-01
  • 商品条码: 9787121366536
  • 版次: 1
  • 开本: 其他
  • 页数: 0
  • 出版年份: 2019
定价:¥139 销售价:登录后查看价格  ¥{{selectedSku?.salePrice}} 
库存: {{selectedSku?.stock}} 库存充足
{{item.title}}:
{{its.name}}
精选
编辑推荐
"1. 关于云原生服务网格Istio的靠前详尽的书籍从此诞生! 2. 来自华为云原生团队的Istio一手材料,厚达600多页,多角度全解Istio。 3. 从原理、实践、架构、源码4个层面剖析Istio,为各层面读者量身打造! 4. 提供源码下载、与作者互动,还可能有惊喜等着你。 5. 华为云原生技术丛书第1本,后续精美图书陆续覆盖云原生方方面面。 6. 加油!云原生服务网格Istio!加油!华为! "
内容简介
本书分为原理篇、实践篇、架构篇和源码篇,由浅入深地将Istio项目庖丁解牛并呈现给读者。原理篇介绍了服务网格技术与Istio项目的技术背景、设计理念与功能原理,能够帮助读者了解服务网格这一云原生领域的标志性技术,掌握Istio流量治理、策略与遥测和安全功能的使用方法。实践篇从零开始搭建Istio运行环境并完成一个真实应用的开发、交付、上线监控与治理的完整过程,能够帮助读者熟悉Istio的功能并加深对Istio的理解。架构篇剖析了Istio项目的三大核心子项目Pilot、Mixer、Citadel的详细架构,帮助读者熟悉Envoy、Galley、Pilot-agent等相关项目,并挖掘Istio代码背后的设计与实现思想。源码篇对Istio各个项目的代码结构、文件组织、核心流程、主要数据结构及各主要代码片段等关键内容都进行了详细介绍,读者只需具备一定的Go语言基础,便可快速掌握Istio各部分的实现原理,并根据自己的兴趣深入了解某一关键机制的完整实现。本书提供源码下载,参见http://github.com/cloudnativebooks/cloud-native-istio。无论是对于刚入门Istio的读者,还是对于已经在产品中使用Istio的读者,本书都极具参考价值。
作者简介
"张超盟 华为云应用服务网格首席架构师,拥有10年以上软件研发经验,先后负责华为云PaaS容器应用运维、微服务平台、云服务目录、服务网格等产品架构设计与开发工作,在容器服务、微服务架构、大数据、应用性能管理、数据库中间件及DevOps工具等多个领域有深入的研究与实践。开源爱好者,Istio社区成员。曾就职于Trend Micro和中铁一局。 章鑫 华为云应用服务网格首席系统工程师, 拥有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年开始参与容器平台的设计与开发,并参与上游社区的贡献。 华为云原生团队 与云原生这一技术领域的团队之一。作为CNCF(云原生计算基金会)的初创成员和白金会员,华为在容器、服务网格、微服务等云原生技术领域都有着深厚的造诣,拥有10多名CNCF开源项目维护者,在Kubernetes、Istio等核心开源项目上的贡献位居全球前列。华为云也提供了基于CNCF开源项目所打造的商业化云原生系列产品,包括云容器引擎、云容器实例、应用服务网格、容器交付流水线等。 华为云原生团队致力于云原生技术在国内的普及与推广,通过“容器魔方”官方微信公众号,以及与CNCF联合打造的Cloud Native 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 如何开发Mixer Adapter 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
摘要
    "推荐序 服务网格技术Istio是云原生(Cloud Native)时代的产物,是云原生应用的新型架构模式,而云原生又是云计算产业发展的新制高点。云计算是近10年左右流行的概念,但实际上,云已经走了很长一段路。 云的概念可以追溯到20世纪60年代。约翰?麦卡锡教授在1961年麻省理工学院的百年庆典上说:“计算机也许有一天会被组织成一种公用事业,就像电话系统是一种公用事业一样。每个订阅者只需为实际使用的容量付费,就可以访问到具有非常庞大的系统的计算资源……”。第一个具有云特征的服务出现在20世纪90年代,当时,电信公司从以前主要提供点对点的专用数据电路服务,转到提供服务质量相当但成本较低的虚拟专用网络(VPN)服务。VPN服务能够通过切换流量和平衡服务器的使用,更有效地使用整体的网络带宽。电信公司开始使用云符号来表示提供商和用户之间的责任界面。在自20世纪60年代以来流行的分时模式的基础上,服务提供商开始开发新的技术和算法,优化计算资源和网络带宽的分布,用户可以按需获取高端计算能力。 2006年,亚马逊首次推出弹性计算云(EC2)服务,云计算的新时代开始了。两年后,第一个用于部署私有云和公有云的开源软件OpenNebula问世;谷歌则推出了应用引擎的测试版;Gartner公司也首次提到了云的市场机会。2010年,Rackspace和NASA联手创建了OpenStack开源云计算平台,企业首次可以在标准硬件上构建消费者可以使用的云。甲骨文、IBM、微软等众多公司也相继发布云产品,云市场开始进入快速增长期。 云计算使企业摆脱了复杂而昂贵的IT基础设施建设和维护,因此,当时的云计算使用以资源(虚拟机、网络和存储)为主,也就是基础设施即服务(IaaS)。企业主要关心怎样将现有的IT基础架构迁移到云上,但在关键应用上对云还是敬而远之。随着云的成熟,包括Netflix和Airbnb在内的众多雄心勃勃的互联网初创公司开始把云计算变成了新商业模式,直接在云上构建企业的关键应用和业务;与此同时,在技术上,人们开始将Linux容器与基于微服务架构的应用结合起来,实现云应用真正意义上的可扩展、高可靠和自动恢复等能力,于是云原生计算诞生了。 云原生的崛起源于企业应用的快速发展和弹性可扩展的需求。在云原生时代拥有代表性和历史性的技术是Kubernetes容器应用编排与管理系统,它提供了大规模和高效管理云应用所需的自动化和可观测性。Kubernetes的成功源于应用容器的兴起,Docker第一次真正使得容器成为大众所喜欢和使用的工具。通过对应用的容器化,开发人员可以更轻松地管理应用程序的语言运行环境及部署的一致性和可伸缩性,这引发了应用生态系统的巨变,极大地减小了测试系统与生产系统之间的差异。在容器之上,Kubernetes提供了跨多个容器和多主机服务及应用体系结构的部署和管理。我们很高兴地看到,Kubernetes正在成为现代软件构建和运维的核心,成为全球云技术的关键。Kubernetes的成功也代表了开源软件运动所能提供的靠前的全球开放与合作,是一次具有真正世界影响力的商业转型。华为云PaaS容器团队很早就开始参与这一开源运动,是云原生计算基金会CNCF的初创会员与董事,在Kubernetes社区的贡献位于全球前列,也是云原生技术的主要贡献者之一。 云原生容器技术和微服务应用的出现,推动了人们对服务网格的需求。那么,什么是服务网格?简而言之,服务网格是服务(包括微服务)之间通信的控制器。随着越来越多的容器应用的开发和部署,一个企业可能会有成百上千或数万计的容器在运行,怎样管理这些容器或服务之间的通信,包括服务间的负载均衡、流量管理、路由、运行状况监视、安全策略及服务间身份验证,就成为云原生技术的巨大挑战。以Istio为代表的服务网格应运而生。在架构上,Istio属于云原生技术的基础设施层,通过在容器旁提供一系列网络代理,来实现服务间的通信控制。其中的每个网络代理就是一个网关,管理容器或容器集群中每个服务间的请求或交互。每个网络代理还拦截服务请求,并将服务请求分发到服务网格上,因此,众多服务构成的无数连接“编织”成网,也就有了“网格”这个概念。服务网格的中央控制器,在Kubernetes容器平台的帮助下,通过服务策略来控制和调整网络代理的功能,包括收集服务的性能指标。 服务网格作为一种云原生应用的体系结构模式,应对了微服务架构在网络和管理上的挑战,也推动了技术堆栈分层架构的发展。从分布式负载平衡、防火墙到服务的可见性,服务网格通过在每个架构层提供通信层来避免服务碎片化,以安全隔离的方式解决了跨集群的工作负载问题,并超越了Kubernetes容器集群,扩展到运行在裸机上的服务。因此,虽然服务网格是从容器和微服务开始的,但它的架构优势也可以适用于非容器应用或服务。 从初始的云理念到云计算再到云原生的发展过程中,我们看到服务网格是云原生技术发展的必然产物。作为云原生架构和技术栈的关键部分,服务网格技术Istio也逐渐成为云原生应用平台的另一块基石,这不仅仅是因为Istio为服务间提供了安全、高可靠和高性能的通信机制,其本身的设计也代表一种由开发人员驱动的、基于策略和服务优先的云原生架构设计理念。本书作者及写作团队具有丰富的Istio实战经验,在本书中由浅入深地剖析了Istio的原理、架构、实践及源码。通过阅读本书,读者不但能够对Istio有全面的了解,还可以学到云原生服务网格的设计思路和理念,对任何一名软件设计架构师或工程师来说都有很大的帮助,这是一本非常有价值的云原生时代分布式系统书籍。 廖振钦 华为云PaaS产品部总经理 "

蜀ICP备2024047804号

Copyright 版权所有 © jvwen.com 聚文网