前言
本文作为《云原生模式》一书的前导部分,汇集了作者、社区专家及贡献者的智慧与心血。文章不仅阐述了云原生架构的核心理念与实践模式,还为读者规划了清晰的学习路径,旨在帮助开发者和架构师更好地理解和应用云原生技术,构建适应动态环境的弹性软件系统。
关于本书
本书旨在成为一本开发健壮、可靠且适应性强的云原生应用的指南。它不仅介绍了思维模型,还涵盖了支持其构建的模式、实践和工具。
本书面向的读者
从根本上说,这是一本关于架构的书,其中包含了支持架构设计的代码示例。我经常会在书中提到当前模式与我们过去做事方式的差异,但你并不需要拥有以往架构模式的经验。因为我不仅讨论了模式本身,还讨论了它们的动机以及应用时的细微差别,所以无论你在软件行业工作了多少年,都能从中发现价值。
尽管书中出现了许多代码示例,但它并非一本编程教学书。代码示例是用 Java 编写的,但任何有其他语言经验的读者都应能轻松理解。如果你对客户端/服务器交互(尤其是通过 HTTP 协议)有基本了解,会很有帮助,但并非必需。
本书的组织结构
本书共 12 章,分为两部分。
第一部分:云原生上下文
这部分定义了云原生的上下文环境,并展示了软件部署环境的特点。
- 第 1 章:定义云原生,并将其与云计算区分开来,提供一个核心思维模型。
- 第 2 章:介绍云原生运维,探讨在生产环境中保证软件持续运行的模式和实践。
- 第 3 章:介绍云原生平台,这是一个支持并实现后续模式的开发和运行时环境。
第二部分:云原生模式
这部分深入探讨了云原生的核心模式。
- 第 4 章:关注云原生交互,介绍事件驱动通信方式作为请求/响应模式的替代方案。
- 第 5 章:关注云原生应用及其与数据的关系,介绍如何部署冗余实例、实现无状态服务等。
- 第 6 章:关注云原生应用,介绍如何在大规模分布式基础设施中统一维护和应用配置。
- 第 7 章:关注云原生应用,介绍应用的生命周期和零停机升级实践(如滚动升级和蓝/绿升级)。
- 第 8 章:关注云原生交互,探讨服务发现和动态路由。
- 第 9 章:关注云原生交互的客户端,解释交互冗余和重试机制。
- 第 10 章:关注云原生交互的服务端,介绍 API 网关和断路器等保护机制。
- 第 11 章:关注应用和交互,介绍如何观察分布式系统的行为和性能。
- 第 12 章:关注数据,介绍将单体数据库分解为分布式数据结构的模式。
云原生模式总览
以下是本书将探讨的主要模式,大致按出场顺序排列:
- 请求/响应模式:一种客户端向远程服务发起请求并期望获得响应的同步或异步通信协议,通常基于 HTTP。
- 事件驱动模式:分布式系统中各实体间通过事件通信,以保持状态同步。
- CQRS 模式:将领域实体的查询处理(读)与命令处理(写)分离。
- 多服务实例模式:通过部署多个应用实例来保证弹性、可扩展性和云原生运维。
- 水平扩展模式:通过增加应用实例来提升服务容量。
- 无状态服务模式:服务不在内存或本地磁盘中存储任何后续调用所需的状态。
- 有状态服务模式:用于持久化状态的服务,如数据库和消息队列,为无状态服务提供数据支持。
- 环境变量配置模式:在应用启动时,通过环境变量注入配置参数。
- 配置服务模式:一个有状态的服务,用于向多个应用实例传递统一的配置。
- 配置即代码模式:通过版本控制系统管理配置文件。
- 零停机升级模式:在升级所有实例时,应用仍能提供完整功能的方法。
- 滚动升级模式:通过分批、增量升级部分实例,实现零停机升级。
关于作者
Cornelia Davis 是 Pivotal 公司的技术副总裁,负责制定公司及客户的技术战略。她致力于将各种云计算模型(IaaS、PaaS、CaaS、FaaS)整合为全面的产品,赋能 IT 组织。
Cornelia 在图像处理、科学可视化、分布式系统、Web 应用架构及云原生平台领域拥有超过 30 年的经验。她拥有加州州立大学北岭分校的计算机科学学士和硕士学位,并在印第安纳大学进一步深造。
内心深处,Cornelia 始终是一位教师,三十年来一直致力于开发更好的软件,并培养更优秀的软件开发人员。闲暇时,她喜欢瑜伽和烹饪。
参考文献
- Cloud Native Patterns - manning.com
- Code for Cloud Native Patterns - github.com
- liveBook Forum - manning.com
- Manning Forum Rules - manning.com
- Cornelia Davis’s Blog - corneliadavis.com
- Cornelia Davis on Medium - medium.com