发布!设计与部署稳定的分布式系统(第2版)
上QQ阅读APP看书,第一时间看更新

内容结构

本书分为四个部分,每个部分都从一个案例研究说起。

第一部分展示如何使系统保持工作状态,并维持系统的正常运行时间。尽管冗余设计保证了可靠性,但是分布式系统所表现出来的可用性,更像是“两个8”,而不是令人梦寐以求的“五个9”“两个8”和“五个9”分别指系统能在88%和99.999%的时间内可用。——译者注。稳定性是在考虑任何其他问题之前,都必须考虑的先决条件。如果系统每天都会崩溃和停机,人们就不会关心其他事情了。在那种情况下,主要的工作就是在短时间思考出暂时的解决办法。不具备稳定性的系统,就是不可用的系统。所以,本书会从为系统打造稳定的基础开始讲起。

确保稳定性之后,就要关注持续的运维。第二部分讨论系统在生产环境中运行究竟意味着什么。我们需要应对现代生产环境的复杂性——虚拟化、容器化、负载均衡和服务发现的各种细节。这一部分将描述一些良好的模式,以帮助物理数据中心和云环境实现可控性、明晰性和可用性。

第三部分讨论部署。对于将软件部署到服务器,市面上已经有了一些很棒的工具。但事实证明,这只解决了问题中很简单的那部分。在不打扰消费者的前提下频繁地微调和更新系统,这让问题变得困难了许多。这一部分先讨论如何针对部署进行设计,以及如何在不停机的情况下进行部署,然后讨论在不同的服务之间如何进行版本控制——这总是一个棘手的问题!

第四部分将系统持续运行作为整个信息生态系统的一部分,探究系统持续运行环境,介绍系统性问题的处理。如果1.0版本的发布意味着该系统的诞生,那么之后则需要考虑其成长和发展。这一部分将讨论如何构建能实现随着时间的推移不断成长、伸展和适应的系统。这包括演进式架构和跨系统进行共享的“知识”。最后会讨论如何通过新兴的“混沌工程”学科,以构建反脆弱系统。“混沌工程”利用随机性并通过故意施压来改善系统。