云原生服务网格Istio:原理、实践、架构与源码解析
华为云原生团队600多页的Istio实战精华总结,云原生服务网格Istio:原理、实践、架构与源码解析的电子书。
图书介绍
《云原生服务网格Istio:原理、实践、架构与源码解析》分为原理篇、实践篇、架构篇和源码篇,由浅入深地将Istio项目庖丁解牛并呈现给读者。
原理篇介绍了服务网格技术与Istio项目的技术背景、设计理念与功能原理,能够帮助读者了解服务网格这一云原生领域的标志性技术,掌握Istio流量治理、策略与遥测和安全功能的使用方法。
实践篇从零开始搭建Istio运行环境并完成一个真实应用的开发、交付、上线监控与治理的完整过程,能够帮助读者熟悉Istio的功能并加深对Istio的理解。
架构篇剖析了Istio项目的三大核心子项目Pilot、Mixer、Citadel的详细架构,帮助读者熟悉Envoy、Galley、Pilot-agent等相关项目,并挖掘Istio代码背后的设计与实现思想。
源码篇对Istio各个项目的代码结构、文件组织、核心流程、主要数据结构及各主要代码片段等关键内容都进行了详细介绍,读者只需具备一定的Go语言基础,便可快速掌握Istio各部分的实现原理,并根据自己的兴趣深入了解某一关键机制的完整实现。
目录大全
原 理 篇
第1章你好,Istio 2
1.1Istio是什么 2
1.2通过示例看看Istio能做什么 4
1.3Istio与服务治理 6
1.3.1关于微服务 6
1.3.2服务治理的三种形态 8
1.3.3Istio不只解决了微服务问题 10
1.4Istio与服务网格 11
1.4.1时代选择服务网格 11
1.4.2服务网格选择Istio 14
1.5Istio与Kubernetes 15
1.5.1Istio,Kubernetes的好帮手 16
1.5.2Kubernetes,Istio的好基座 18
1.6本章总结 20
第2章Istio架构概述 21
2.1Istio的工作机制 21
2.2Istio的服务模型 23
2.2.1Istio的服务 24
2.2.2Istio的服务版本 26
2.2.3Istio的服务实例 28
2.3Istio的主要组件 30
2.3.1istio-pilot 30
2.3.2istio-telemetry 32
2.3.3istio-policy 33
2.3.4istio-citadel 34
2.3.5istio-galley 34
2.3.6istio-sidecar-injector 35
2.3.7istio-proxy 35
2.3.8istio-ingressgateway 36
2.3.9其他组件 37
2.4本章总结 37
第3章非侵入的流量治理 38
3.1Istio流量治理的原理 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.2Istio路由规则配置:VirtualService 59
3.2.1路由规则配置示例 59
3.2.2路由规则定义 60
3.2.3HTTP路由(HTTPRoute) 63
3.2.4TLS路由(TLSRoute) 78
3.2.5TCP路由(TCPRoute) 81
3.2.6三种协议路由规则的对比 83
3.2.7VirtualService的典型应用 84
3.3Istio目标规则配置:DestinationRule 89
3.3.1DestinationRule配置示例 90
3.3.2DestinationRule规则定义 90
3.3.3DestinationRule的典型应用 103
3.4Istio服务网关配置:Gateway 107
3.4.1Gateway配置示例 108
3.4.2Gateway规则定义 109
3.4.3Gateway的典型应用 112
3.5Istio外部服务配置:ServiceEntry 120
3.5.1ServiceEntry配置示例 120
3.5.2ServiceEntry规则的定义和用法 121
3.5.3ServiceEntry的典型应用 123
3.6Istio代理规则配置:Sidecar 126
3.6.1Sidecar配置示例 126
3.6.2Sidecar规则定义 126
3.7本章总结 129
第4章可扩展的策略和遥测 131
4.1Istio策略和遥测的原理 131
4.1.1应用场景 131
4.1.2工作原理 136
4.1.3属性 137
4.1.4Mixer的配置模型 140
4.2Istio遥测适配器配置 147
4.2.1Prometheus适配器 148
4.2.2Fluentd适配器 155
4.2.3StatsD适配器 159
4.2.4Stdio适配器 161
4.2.5Zipkin适配器 163
4.2.6厂商适配器 168
4.3Istio策略适配器配置 169
4.3.1List适配器 169
4.3.2Denier适配器 171
4.3.3Memory Quota适配器 172
4.3.4Redis Quota适配器 175
4.4Kubernetes Env适配器配置 178
4.5本章总结 181
第5章可插拔的服务安全 182
5.1Istio服务安全的原理 182
5.1.1认证 185
5.1.2授权 189
5.1.3密钥证书管理 192
5.2Istio服务认证配置 193
5.2.1认证策略配置示例 193
5.2.2认证策略的定义 194
5.2.3TLS访问配置 196
5.2.4认证策略的典型应用 200
5.3Istio服务授权配置 202
5.3.1授权启用配置 202
5.3.2授权策略配置 203
5.3.3授权策略的典型应用 207
5.4本章总结 210
第6章透明的Sidecar机制 211
6.1Sidecar注入 211
6.1.1Sidecar Injector自动注入的原理 214
6.1.2Sidecar注入的实现 216
6.2Sidecar流量拦截 219
6.2.1iptables的基本原理 220
6.2.2iptables的规则设置 223
6.2.3流量拦截原理 224
6.3本章总结 228
第7章多集群服务治理 230
7.1Istio多集群服务治理 230
7.1.1Istio多集群的相关概念 230
7.1.2Istio多集群服务治理现状 231
7.2多集群模式1:多控制面 232
7.2.1服务DNS解析的原理 233
7.2.2Gateway连接的原理 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.1Weather Forecast简介 257
8.4.2Weather Forecast部署 258
8.5本章总结 259
第9章流量监控 260
第10章灰度发布 278
第11章流量治理 296
第12章服务保护 323
第13章多集群管理 342
13.1实战目标 342
13.2实战演练 342
13.3本章总结 350
架 构 篇
第14章司令官Pilot 352
第15章守护神Mixer 397
第16章安全碉堡Citadel 439
第17章高性能代理Envoy 450
第18章代理守护进程Pilot-agent 460
第19章配置中心Galley 469
源 码 篇
第20章Pilot源码解析 484
第21章Mixer源码解析 515
第22章Citadel源码解析 544
第23章Envoy源码解析 559
第24章Galley源码解析 574
结语 590
附录A源码仓库介绍 592
附录B实践经验和总结 598
60多本经典编程书籍,关注WX公众号领取回复:书籍
本书直接下载链接:云原生服务网格Istio:原理、实践、架构与源码解析
云原生服务网格Istio:原理、实践、架构与源码解析的更多相关文章
- Istio技术与实践02:源码解析之Istio on Kubernetes 统一服务发现
前言 文章Istio技术与实践01: 源码解析之Pilot多云平台服务发现机制结合Pilot的代码实现介绍了Istio的抽象服务模型和基于该模型的数据结构定义,了解到Istio上只是定义的服务发现的接 ...
- Android 热修复Nuwa的原理及Gradle插件源码解析
现在,热修复的具体实现方案开源的也有很多,原理也大同小异,本篇文章以Nuwa为例,深入剖析. Nuwa的github地址 https://github.com/jasonross/Nuwa 以及用于 ...
- 神经网络中 BP 算法的原理与 Python 实现源码解析
最近这段时间系统性的学习了 BP 算法后写下了这篇学习笔记,因为能力有限,若有明显错误,还请指正. 什么是梯度下降和链式求导法则 假设我们有一个函数 J(w),如下图所示. 梯度下降示意图 现在,我们 ...
- vue系列---响应式原理实现及Observer源码解析(一)
_ 阅读目录 一. 什么是响应式? 二:如何侦测数据的变化? 2.1 Object.defineProperty() 侦测对象属性值变化 2.2 如何侦测数组的索引值的变化 2.3 如何监听数组内容的 ...
- 精彩分享 | 欢乐游戏 Istio 云原生服务网格三年实践思考
作者 吴连火,腾讯游戏专家开发工程师,负责欢乐游戏大规模分布式服务器架构.有十余年微服务架构经验,擅长分布式系统领域,有丰富的高性能高可用实践经验,目前正带领团队完成云原生技术栈的全面转型. 导语 欢 ...
- JAVA SPI(Service Provider Interface)原理、设计及源码解析(其一)
背景 团队内部轮流技术分享,其他人都是分享源码,我每次都是设计和架构,感觉自己太特立独行.这次我要合群点,分享点源码. 概念 Service Provider Interface:服务提供方接口.是一 ...
- Istio技术与实践01: 源码解析之Pilot多云平台服务发现机制
服务模型 首先,Istio作为一个(微)服务治理的平台,和其他的微服务模型一样也提供了Service,ServiceInstance这样抽象服务模型.如Service的定义中所表达的,一个服务有一个全 ...
- [源码解析] 消息队列 Kombu 之 基本架构
[源码解析] 消息队列 Kombu 之 基本架构 目录 [源码解析] 消息队列 Kombu 之 基本架构 0x00 摘要 0x01 AMQP 1.1 基本概念 1.2 工作过程 0x02 Poll系列 ...
- [源码解析] 机器学习参数服务器 Paracel (1)-----总体架构
[源码解析] 机器学习参数服务器 Paracel (1)-----总体架构 目录 [源码解析] 机器学习参数服务器 Paracel (1)-----总体架构 0x00 摘要 0x01使用 1.1 配置 ...
- [源码解析] 并行分布式框架 Celery 之架构 (2)
[源码解析] 并行分布式框架 Celery 之架构 (2) 目录 [源码解析] 并行分布式框架 Celery 之架构 (2) 0x00 摘要 0x01 上文回顾 0x02 worker的思考 2.1 ...
随机推荐
- Go-单链表-栈和队列
package main import ( "errors" "fmt" "log" ) // 单链表 // 特征: // 1. 每个节点都 ...
- [转帖]【jmeter】BeanShell用法详细汇总
一.什么是Bean Shell BeanShell是用Java写成的,一个小型的.免费的.可以下载的.嵌入式的Java源代码解释器,具有对象脚本语言特性,非常精简的解释器jar文件大小为175k. B ...
- [转帖]oracle OSWatcher安装部署
Oswatch是oracle官方提供,用于收集操作系统性能的小工具,oswatch的安装与使用也比较简单,直接解压就可以使用.oswatch是通过调用系统的命令完成信息的收集,如:ps ,top ,m ...
- [转帖]「Linux性能调优」磁盘I/O队列调度策略
https://zhuanlan.zhihu.com/p/450329513 傻瓜化说明 简单地说,对于磁盘I/O,Linux提供了cfq, deadline和noop三种调度策略 cfq: 这个名字 ...
- [转帖] shell管道咋堵住了
https://www.cnblogs.com/codelogs/p/16060378.html 背景# 起因是这样的,我们想开发一个小脚本,当cpu使用率过高时,使用jstack将java的线程栈保 ...
- 没有虚拟DOM版本的vue(Vue Vapor)
前言 随着Svelte和SolidJS的流行,无虚拟DOM模式逐渐开始火了起来.vue也推出了无虚拟DOM模式的版本,就是我们今天要讲的Vue Vapor. 什么是Vue Vapor Vue Vapo ...
- 从好玩到好用:程序员用AI提效的那些事儿
本片内容是[AI思维空间]ChatGPT纵横编程世界,点亮智慧火花的续作,主要记录组内开发小伙伴儿们在开发过程中的实际应用案例,记录典型案例,尽量不要和其他人重复,以解决开发过程中的实际问题为主,设计 ...
- js下拉加载更多-详解
场景 有些时候,我们在pc端经常会遇见滚动到底部的时候,去加载下一页的数据, 这个时候,我们就需要知道滚动条什么时候触底了, 如果触底了,就去加载下一页的数据; 在触底的过程中,我们需要注意的是,防止 ...
- 微服务用yml安装系统(第一版)
当用微服务安装系统后,面临服务较多,一个一个安装比较麻烦,是否有统一的脚本可以直接执行安装呢?答案是肯定的: 1.首先介绍一下所有安装脚本,如下图 spd-volume:是各服务外挂的资料卷 comm ...
- Go Plugin介绍
以下内容来自官方文档. go version: 1.17.5 综述 plugin包实现了Go插件的加载和符号解析. Go插件是一个包括了可导出函数和变量的main包(可以没有main()函数),构建时 ...