目 录
第 一部分 云原生概述
第 1章 初见云原生 2
1.1 什么是云原生 2
1.1.1 云原生起源 2
1.1.2 企业为什么需要云原生 3
1.1.3 云原生的设计原则 7
1.2 云原生架构 9
1.2.1 敏捷基础设施 10
1.2.2 微服务 12
1.2.3 持续交付 14
1.2.4 DevOps 16
1.2.5 云原生应用十二要素 19
1.3 CNCF 28
1.3.1 CNCF生态蓝图 28
1.3.2 CNCF路线图 31
1.4 企业应用上云 33
1.4.1 云托管模式 35
1.4.2 云原生模式 37
第 2章 企业应用架构演进 40
2.1 单体架构 40
2.2 分布式架构 41
2.3 SOA 42
2.4 微服务架构 43
2.5 服务网格架构 45
2.6 Serverless架构 48
第二部分 云原生技术
第3章 Docker 52
3.1 Docker概述 52
3.1.1 容器和虚拟机 52
3.1.2 Docker的历史与版本 54
3.1.3 Docker的构成 55
3.1.4 Docker处理流程 57
3.1.5 Docker的优势 57
3.1.6 Docker常用命令 58
3.2 Docker分层设计 63
3.2.1 分层设计与写时拷贝 64
3.2.2 镜像分层管理 66
3.2.3 镜像版本变更管理 69
3.3 Docker三要素 70
3.3.1 镜像 70
3.3.2 容器 74
3.3.3 镜像仓库 81
3.4 Docker数据管理 85
3.4.1 非持久化数据 86
3.4.2 持久化数据 88
3.4.3 集群节点间共享存储 91
3.5 Docker网络 92
3.5.1 网络命名空间 92
3.5.2 Linux网络虚拟化 93
3.5.3 Docker网络架构 95
3.5.4 容器网络模型 96
3.5.5 单机桥接网络 98
3.5.6 多机覆盖网络 100
3.5.7 混合互联网络 102
3.5.8 网络访问控制 104
3.6 Docker三剑客 106
3.6.1 Docker Machine 107
3.6.2 Docker Compose 109
3.6.3 Docker Swarm 110
第4章 Kubernetes 116
4.1 Kubernetes的基本概念和术语 117
4.1.1 资源抽象对象 120
4.1.2 控制器抽象对象 123
4.1.3 其他辅助对象 128
4.2 Kubernetes系统架构 128
4.2.1 K8s整体架构 128
4.2.2 K8s集群高可用架构 131
4.2.3 K8s网络架构 133
4.3 Kubernetes运行机制 138
4.3.1 应用运行原理 138
4.3.2 应用访问机制 141
4.3.3 核心组件运行原理 147
4.4 kubectl命令 155
4.4.1 kubeconfig 155
4.4.2 kubectl子命令 157
4.4.3 kubectl可操作的资源对象类型 159
4.4.4 kubectl参数列表 160
4.4.5 kubectl输出格式 161
4.5 Kubernetes容器云 162
4.5.1 阿里云容器服务(ACK) 162
4.5.2 Amazon Elastic Kubernetes Service(Amazon EKS) 165
4.5.3 Azure Kubernetes Service(AKS) 166
4.5.4 Google Kubernetes Engine (GKE) 167
第5章 Prometheus 169
5.1 Prometheus概述 169
5.1.1 Prometheus简介 169
5.1.2 Prometheus相关概念 170
5.1.3 Prometheus组成及架构 172
5.1.4 prometheus.yml配置文件 175
5.2 Prometheus监控K8s集群 179
5.2.1 监控K8s集群节点 181
5.2.2 监控K8s的pod 183
5.2.3 监控K8s的API server 184
5.2.4 监控K8s的服务 185
5.2.5 监控kube-state-metrics 187
5.3 Prometheus监控传统应用 187
第6章 微服务 190
6.1 微服务架构概述 190
6.1.1 微服务架构的演进 190
6.1.2 微服务架构的特点 192
6.1.3 微服务治理 193
6.1.4 微服务的组织架构 195
6.2 微服务设计原则 196
6.3 服务化实践 202
6.4 微服务框架 203
6.4.1 High-Speed Service Framework(HSF) 203
6.4.2 Dubbo 205
6.4.3 Spring Cloud 206
6.4.4 gRPC 209
6.4.5 服务网格(service mesh) 211
6.5 微服务通信 215
6.5.1 RPC 215
6.5.2 RESTful 218
6.5.3 优缺点对比 221
6.5.4 两种协议风格的融合方案 222
第三部分 云原生服务
第7章 云原生IaaS服务 234
7.1 容器服务 235
7.2 镜像仓库服务 238
7.3 分布式存储服务 240
7.4 虚拟网络服务 243
第8章 云原生DaaS服务 247
8.1 数据库服务 247
8.2 分布式对象存储 249
8.3 分布式缓存 252
8.4 分布式日志服务 257
8.5 分布式消息队列 260
8.6 大数据服务 264
8.6.1 大数据平台 265
8.6.2 数据资源池 268
8.6.3 数据集成平台 269
第9章 云原生PaaS服务 270
9.1 分布式应用服务 270
9.2 分布式配置中心 273
9.3 分布式数据库服务 276
9.4 分布式定时任务 281
9.5 业务实时监控服务 283
9.6 服务网关 286
9.7 技术组件服务 288
9.7.1 统一认证服务 288
9.7.2 单点登录服务 289
9.7.3 全局序列号服务 290
9.7.4 持久化服务 292
9.7.5 连接池服务 293
9.7.6 事务管理 295
9.7.7 异常管理 297
9.7.8 数据传输服务 300
第四部分 云原生架构实践
第 10章 高可用解决方案 304
10.1 高可用定义 304
10.2 高可用设计 305
10.2.1 应用设计 305
10.2.2 数据设计 311
10.2.3 兼容性设计 314
10.2.4 容量设计 315
10.3 高可用方案 317
10.3.1 全链路压测方案 317
10.3.2 流控降级方案 321
10.3.3 故障演练方案 323
10.3.4 故障隔离方案 327
10.3.5 弹性伸缩方案 330
10.3.6 应用应急预案 333
第 11章 数据一致性解决方案 337
11.1 数据一致性理论 337
11.1.1 ACID特性 338
11.1.2 事务隔离级别 338
11.1.3 CAP定理 339
11.1.4 BASE思想 340
11.2 数据一致性模型 341
11.3 数据一致性原则 342
11.3.1 数据一致性实现指导 342
11.3.2 数据拆分原则 344
11.3.3 热点数据处理 345
11.4 锁机制 346
11.4.1 悲观锁与乐观锁 346
11.4.2 数据库锁 347
11.4.3 分布式锁 347
11.5 数据一致性解决方案 348
11.5.1 强一致性解决方案 349
11.5.2 弱一致性解决方案 352
11.5.3 终一致性解决方案 353
第 12章 容灾多活解决方案 359
12.1 SHARE 78容灾等级 359
12.2 容灾目标 362
12.3 数据容灾方案 363
12.4 同城双活方案 364
12.5 两地三中心方案 366
12.6 异地双活方案 367
12.7 单元化方案 369