内容简介
本书围绕“构建高可用系统”(更可靠、更敏捷、更低成本)的主题,系统阐述近年来的技术演进路径与底层原理。
第 1 章为概论,从业务需求出发,回顾近年技术架构演进趋势,帮读者快速建立全局认知。第 2~4 章讲网络,以网络请求链路为线索,深入操作系统内核、负载均衡原理,讲解“快”背后的系统设计。第 5、6 章讲分布式系统,聚焦一致性与容错,拆解 CAP 定理、分布式事务与共识算法等核心机制。第 7、8 章解析 Kubernetes 架构与服务网格技术,理解云原生基础设施的设计逻辑。第 9 章讲系统观测,构建统一观测体系,掌握指标、日志、链路追踪的集成与分析方法。第 10 章为软件交付,剖析声明式管理理念,讲解Kustomize、Helm、Operator、OAM 等主流交付模型。
本书融合技术理论与一线实践,适合后端工程师、系统架构师、技术团队负责人及关注底层原理的高级开发者阅读。
作者简介
王伟峰爱奇艺架构师,有17年软件研发经验。擅长云计算、大规模分布式系统的架构设计与工程实现,对人工智能领域亦有涉猎。开源图书《创造智慧》作者。
目录
第1章云原生技术概论1.1云计算的演进变革
1.1.1物理机时代
1.1.2虚拟化技术成熟
1.1.3云计算技术成熟
1.1.4容器技术兴起
1.1.5云计算形态演进总结
1.2云原生出现的背景
1.2.1软件正在吞噬世界
1.2.2移动互联网在加剧变化
1.2.3云原生的诞生
1.3云原生的定义
1.3.1Pivotal对云原生的定义
1.3.2CNCF对云原生的定义
1.3.3云原生定义之外
1.4云原生技术的目标
1.5云原生代表技术
1.5.1容器技术
1.5.2微服务
1.5.3服务网格
1.5.4可变基础设施与不可变基础设施
1.5.5声明式设计
1.5.6DevOps
1.6云原生架构的演进
1.7云原生架构技术栈
1.8小结
第2章构建“足够快”的网络服务
2.1了解各类延迟指标
2.2HTTPS请求优化分析
2.2.1请求阶段分析
2.2.2各阶段耗时分析
2.2.3HTTPS的优化总结
2.3域名解析的原理与实践
2.3.1域名解析的原理
2.3.2排查域名解析故障
2.3.3Facebook故障分析与总结
2.3.4使用HTTPDNS解决“中间商”问题
2.4使用Brotli压缩传输内容
2.5HTTPS加密原理及优化实践
2.5.1HTTPS加密原理
2.5.2HTTPS优化实践
2.6网络拥塞控制原理与实践
2.6.1网络拥塞控制原理
2.6.2早期拥塞控制旨在收敛
2.6.3现代拥塞控制旨在效能最大化
2.6.4BBR的设计原理
2.6.5BBR的性能表现
2.7对请求进行“动态加速”
2.8QUIC设计原理与实践
2.8.1QUIC出现的背景
2.8.2QUIC的特点
2.8.3QUIC实践
2.9小结
第3章深入Linux内核网络技术
3.1OSI网络分层模型
3.2Linux系统收包流程
3.3Linux内核网络框架
3.3.1Netfilter的5个钩子
3.3.2数据包过滤工具iptables
3.3.3连接跟踪模块conntrack
3.4内核旁路技术
3.4.1数据平面开发套件DPDK
3.4.2eBPF和快速数据路径XDP
3.4.3远程直接内存访问RDMA
3.5Linux网络虚拟化
3.5.1网络命名空间
3.5.2虚拟网络设备TUN和TAP
3.5.3虚拟网卡Veth
3.5.4虚拟交换机LinuxBridge
3.5.5虚拟网络通信技术
3.6小结
第4章负载均衡与代理技术
4.1负载均衡与代理的分类
4.1.1四层负载均衡
4.1.2七层负载均衡
4.2负载均衡器总体功能
4.2.1服务发现
4.2.2健康检查
4.2.3黏性会话
4.2.4TLS卸载
4.2.5安全和DDoS防御
4.2.6观测
4.2.7负载均衡
4.3负载均衡部署拓扑
4.3.1中间代理型
4.3.2边缘代理型
4.3.3客户端内嵌型
4.3.4边车代理型
4.4四层负载均衡技术
4.4.1直接路由模式
4.4.2隧道模式
4.4.3网络地址转换模式
4.4.4主备模式
4.4.5基于集群和一致性哈希的容错和可扩展模式
4.5从七层负载均衡到网关
4.6全局负载均衡设计
4.7小结
第5章数据一致性与分布式事务
5.1数据一致性
5.2一致性与可用性的权衡
5.3分布式事务模型
5.3.1可靠事件队列
5.3.2TCC
5.3.3Saga
5.4服务幂等性设计
5.4.1全局唯一ID方案
5.4.2乐观锁方案
5.5小结
第6章分布式共识及算法
6.1什么是共识
6.2日志与复制状态机
6.3Paxos算法
6.3.1Paxos算法起源
6.3.2Paxos算法详述
6.4Raft算法
6.4.1领导者选举
6.4.2日志复制
6.4.3成员变更
6.5小结
第7章容器编排技术
7.1容器编排系统的演进
7.1.1Borg系统
7.1.2Omega系统
7.1.3Kubernetes系统
7.1.4以应用为中心的转变
7.2容器技术的原理与演进
7.2.1文件系统隔离
7.2.2资源全方位隔离
7.2.3资源全方位限制
7.2.4设计容器协作的方式
7.2.5超亲密容器组Pod
7.2.6Pod是Kubernetes的基本单位
7.2.7Pod是调度的原子单元
7.2.8容器边车模式
7.3容器镜像的原理与应用
7.3.1什么是容器镜像
7.3.2容器镜像分层设计原理
7.3.3构建足够小的容器镜像
7.3.4加速容器镜像下载
7.3.5加速容器镜像启动
7.4容器运行时与CRI接口
7.4.1Docker与Kubernetes
7.4.2容器运行时接口CRI
7.4.3Kubernetes专用容器运行时
7.4.4Containerd与CRI
7.4.5安全容器运行时
7.4.6容器运行时生态
7.5容器持久化存储设计
7.5.1Docker的存储设计
7.5.2Kubernetes的存储设计
7.5.3普通的Volume
7.5.4持久化的Volume
7.5.5PV的使用:从手动到自动
7.5.6Kubernetes存储系统设计
7.5.7存储分类:块存储、文件存储和对象存储
7.6容器间通信的原理
7.6.1Overlay覆盖网络模式
7.6.2三层路由模式
7.6.3Underlay底层网络模式
7.6.4CNI插件及生态
7.7资源模型及编排调度
7.7.1资源模型与资源管理
7.7.2扩展资源与设备插件
7.7.3默认调度器及扩展设计
7.8资源弹性伸缩
7.8.1Pod水平自动伸缩
7.8.2Pod垂直自动伸缩
7.8.3基于事件驱动的伸缩
7.8.4节点自动伸缩
7.9小结
第8章服务网格技术
8.1什么是服务网格
8.2服务间通信的演化
8.2.1原始的通信时代
8.2.2第一代微服务
8.2.3第二代微服务
8.2.4微服务框架的痛点
8.2.5思考服务间通信的本质
8.2.6代理模式的探索
8.2.7第一代服务网格
8.2.8第二代服务网格
8.3数据平面的设计
8.3.1Sidecar自动注入
8.3.2流量透明劫持
8.3.3实现可靠通信
8.4控制面的设计
8.5服务网格的产品与生态
8.5.1Linkerd2出击
8.5.2其他参与者
8.5.3Istio与Linkerd2性能对比
8.6服务网格的未来
8.6.1Proxyless模式
8.6.2Sidecarless模式
8.6.3AmbientMesh模式
8.7小结
第9章系统可观测性
9.1什么是可观测性
9.2可观测性与传统监控的区别
9.3遥测数据的分类与处理
9.3.1指标的处理
9.3.2日志的索引与存储
9.3.3分布式链路追踪
9.3.4性能剖析
9.3.5核心转储
9.4可观测标准的演进
9.5小结
第10章应用封装与交付
10.1“以应用为中心”的设计思想
10.2声明式管理的本质
10.2.1控制器模式
10.2.2基础设施即数据思想
10.3从“封装配置”到“应用模型”
10.3.1Kustomize
10.3.2Helm与Chart
10.3.3Operator
10.3.4OAM与KubeVela
10.4小结
附录A术语缩写与释义
······
最后修改:2025 年 10 月 12 日
© 允许规范转载