作者 |
贺阮 |
丛书名 |
出版社 |
电子工业出版社 |
ISBN |
9787121421273 |
简要 |
简介 |
内容简介书籍计算机书籍 云原生之路,漫漫而修远,因为云在发展,应用也在发展。如何让应用充分利用云的特性焕发全新面貌,这是每个云原生应用架构领域的人应该思考的问题。 本书分为两篇,从技术演进讲起,让读者充分了解系统资源、应用架构和软件工程的发展历程,从而拥有技术角度的全局视野;然后介绍云原生应用的实践,手把手教你设计一个云原生应用。 本书适合云原生应用开发人员、架构师、云计算从业者阅读,部分章节对产品团队、运维人员亦有一定的参考价值。 |
目录 |
技术演进篇 第1部分 系统资源 2 第1章 操作系统 3 1.1 操作系统简介 3 1.1.1 主要功能 4 1.1.2 系统结构 5 1.2 CPU指令集原理 6 1.2.1 特权指令集和非特权指令集 6 1.2.2 保护模式及内核态、用户态 7 1.2.3 指令工作流程 8 1.3 内核 9 1.3.1 组成模块化 9 1.3.2 单内核 9 1.3.3 微内核 10 1.3.4 外内核 11 第2章 虚拟化 13 2.1 虚拟化概述 13 2.1.1 直接使用物理设备 13 2.1.2 虚拟化原理 14 2.2 虚拟化指令集 16 2.2.1 敏感指令集 17 2.2.2 虚拟化指令集的工作模式 17 2.3 虚拟化类型 20 2.3.1 全虚拟化 20 2.3.2 类虚拟化 21 2.3.3 硬件辅助虚拟化 22 2.4 虚拟化架构 24 2.4.1 裸金属架构 24 2.4.2 宿主模式架构 25 2.5 常见的虚拟化产品 25 2.5.1 VMware 25 2.5.2 Xen 26 2.5.3 KVM 26 2.5.4 QEMU 27 2.5.5 NEMU 28 2.5.6 Firecracker 28 2.5.7 VirtualBox 28 2.5.8 Libvirt 29 2.5.9 Vagrant 30 第3章 云计算 32 3.1 云计算概述 32 3.1.1 虚拟化的不足 32 3.1.2 云计算的特点 33 3.2 IaaS 34 3.2.1 云的部署模式 34 3.2.2 IaaS的主要功能 36 3.2.3 IaaS架构 36 3.2.4 云平台组织架构 37 3.2.5 OpenStack 39 3.2.6 云平台部署架构 41 3.3 PaaS 42 3.3.1 简介 43 3.3.2 核心功能 45 3.3.3 微软Azure 47 3.3.4 PaaS的优缺点 48 3.4 SaaS 49 第4章 容器 53 4.1 容器简介 53 4.1.1 容器技术的优缺点 53 4.1.2 大事记 54 4.2 基本技术 55 4.2.1 namespace 56 4.2.2 cgroup 59 4.2.3 rootfs 60 4.3 Docker 61 4.3.1 容器运行时 61 4.3.2 镜像 63 4.3.3 Docker总结 64 4.4 内核容器技术 64 4.4.1 Kata 64 4.4.2 Firecracker 65 4.4.3 gVisor 66 4.4.4 Unikernel 67 4.5 容器与虚拟机 68 4.6 容器与PaaS 69 第5章 容器编排 70 5.1 容器编排简介 70 5.1.1 大事记 70 5.1.2 Swarm与Kubernetes之争 71 5.1.3 容器编排工具的核心功能 73 5.2 Kubernetes 74 5.2.1 设计理念与特性 74 5.2.2 运行架构 76 5.2.4 API对象 80 5.3 容器编排与PaaS 90 5.4 Kubernetes企业级实战:OpenShift 91 5.5 实现有状态应用和无状态应用 91 5.5.1 无状态应用与有状态应用 92 5.5.2 从无状态应用到Severless 92 5.5.3 Kubernetes对有状态应用的管理 92 5.5.4 容器编排的终目标 93 第2部分 应用架构 95 第6章 应用架构概述 96 6.1 架构与框架的区别 97 6.2 狭义的和广义的应用架构 97 6.2.1 狭义的应用架构 97 6.2.2 广义的应用架构 98 6.3 应用架构的定义 98 6.4 应用架构的目标 99 第7章 主流架构 101 7.1 4 1”架构视图 101 7.1.1 逻辑视图 102 7.1.2 开发视图 102 7.1.3 进程视图 102 7.1.4 物理视图 103 7.1.5 场景视图 103 7.2 ArchiMate 104 7.2.1 ArchiMate概述 104 7.2.2 业务层 106 7.2.3 应用层 106 7.2.4 技术层 107 7.3 TOGAF框架 109 第8章 架构详解 114 8.1 业务架构 114 8.1.1 业务场景 114 8.1.2 业务用例 115 8.1.3 业务实体 115 8.1.4 业务流程 116 8.2 应用架构 116 8.2.1 功能架构 117 8.2.2 数据架构 121 8.2.3 实现架构 124 8.3 基础架构 131 8.3.1 物理架构 131 8.3.2 运行架构 131 第9章 典型的应用架构模式 133 9.1 单体架构 133 9.1.1 单体架构的特点 133 9.1.2 功能架构 134 9.1.3 单体应用的数据优化 136 9.1.4 单体架构的优缺点 142 9.2 基于组件的架构 143 9.2.1 特性 144 9.2.2 微内核架构 145 9.2.3 两种基于组件的应用开发、运行框架 145 9.2.4 组件设计原则 146 9.3 分布式与SOA 148 9.3.1 分布式 148 9.3.2 SOA 150 第10章 微服务架构 160 10.1 微服务架构简介 160 10.1.1 微服务与应用 161 10.1.2 微服务架构与SOA 162 10.1.3 微服务架构与容器编排 162 10.1.4 微服务架构与组织架构 163 10.2 采用微服务架构的优势与难点 163 10.3 微服务架构详解 165 10.3.1 功能架构 165 10.3.2 实现架构 166 10.3.3 部署单元 167 10.4 设计原则 167 10.4.1 服务注册中心 167 10.4.2 API网关 168 10.4.3 跨服务通信 169 10.4.4 API设计 170 10.4.5 数据一致性处理 172 第11章 微服务框架 181 11.1 微服务架构与微服务框架 181 11.2 核心功能 182 11.2.1 服务注册发现 182 11.2.2 服务负载路由 183 11.2.3 统一配置 184 11.2.4 服务编排与弹性伸缩 184 11.2.5 流量管控 185 11.2.6 可观察运维 186 11.3 框架分类 188 11.3.1 业务处理框架 188 11.3.2 SDK框架 189 11.3.3 服务网格 190 第3部分 软件工程 195 第12章 应用设计 196 12.1 明确愿景 196 12.1.1 目标对象 197 12.1.2 度量价值 197 12.1.3 详细描述 198 12.1.4 上下文图 198 12.2 明确组织架构 200 12.3 顶层业务建模 201 12.3.1 概述 201 12.3.2 业务领域 202 12.3.3 业务场景 205 12.4 应用需求分析 209 12.4.1 概述 209 12.4.2 识别角色 210 12.4.3 业务实体 210 12.4.4 业务流程 212 12.5 应用设计建模 214 12.5.1 概述 214 12.5.2 圈定微服务 215 12.5.3 应用架构设计 216 12.6 领域驱动建模 218 12.6.1 分布式应用建模的痛点 219 12.6.2 DDD概述 219 12.6.3 DDD的优势 220 12.6.4 基本概念 221 12.6.5 实施步骤 229 12.6.6 DDD与应用设计 238 第13章 软件开发 240 13.1 瀑布模型 240 13.2 敏捷开发模型 242 13.2.1 敏捷宣言 243 13.2.2 Scrum 244 13.2.3 极限编程方法 245 第14章 开发运维一体化:DevOps 248 14.1 精益思想 248 14.1.1 起源 248 14.1.2 精益生产 249 14.1.3 精益原则 250 14.1.4 精益软件开发 251 14.1.5 价值探索 253 14.1.6 IT价值流 253 14.1.7 精益和敏捷 255 14.2 持续集成 255 14.2.1 原则 255 14.2.2 步骤 256 14.3 持续交付与持续部署 258 14.3.1 持续交付 258 14.3.2 持续部署 259 14.3.3 特性发布 263 14.4 DevOps与CI/CD 269 14.4.1 定义 270 14.4.2 原则与推广 271 14.4.3 三步工作法 272 14.5 测试 275 14.5.1 概述 275 14.5.2 功能性测试 277 14.5.3 非功能性测试 281 14.6 DevOps与敏捷开发、Kubernetes、微服务、应用架构模式的关系 283 第15章 SRE运维 286 15.1 SRE运维简介 286 15.1.1 SLA 287 15.1.2 运维的发展阶段 288 15.1.3 架构层次 288 15.2 监控 289 15.2.1 监控概述 289 15.2.2 多层监控 291 15.2.3 告警 292 15.3 日志 293 15.3.1 日志系统架构 293 15.3.2 日志的采集、汇总与展示 294 15.4 故障排查 295 15.4.1 具体步骤 295 15.4.2 监控检查 296 15.5 作业运行 296 第16章 数字化运营 298 16.1 数字化运营概述 298 16.1.1 运营数据 298 16.1.2 角色分类 299 16.1.3 用户画像 299 16.2 数据处理 300 16.2.1 数据采集 300 16.2.2 数据建模 301 16.2.3 数据分析 301 16.2.4 指标分析 302 16.3 反馈流程 303 16.4 验证模式 304 16.4.1 A/B测试 304 16.4.2 灰度发布 305 16.5 平台架构 306 16.5.1 运维数据平台 306 16.5.2 智能化运维 306 实践篇 第4部分 架构、应用落地与中台构建 310 第17章 云原生架构 311 17.1 云原生的定义 311 17.1.1 12因子应用 311 17.1.2 云原生架构的特征 313 17.1.3 CNCF对云原生的定义 314 17.1.4 本书对云原生的定义 315 17.2 关键技术 318 17.2.1 不可变基础设施(容器) 318 17.2.2 声明式编排(Kubernetes) 319 17.2.3 微服务架构(解耦性) 320 17.2.4 动态赋能(服务网格) 320 17.2.5 适应度函数(引导性) 320 17.2.6 领域驱动建模(统一模型) 321 17.2.7 CI/CD/CO 321 17.3 云原生应用的实现过程 322 第18章 应用落地实践 323 18.1 云原生化条件 323 18.1.1 团队能力建设 323 18.1.2 推荐引入云原生化的场景 324 18.1.3 不推荐引入云原生化的场景 326 18.2 演进式的流程 327 18.3 应用改造模式 328 18.3.1 双胞胎模式 328 18.3.2 绞杀者模式 328 18.3.3 修缮者模式 329 18.4 应用拆分原则 330 18.4.1 按业务能力拆分 330 18.4.2 按DDD子领域拆分 330 18.4.3 其他原则 332 18.5 API设计与治理 333 18.5.1 前后端分离 334 18.5.2 规范化API 334 18.5.3 并行或异步调用 336 18.5.4 业务聚合 336 18.6 应用状态分1 |