导入
缩放入门
了解缩放的基本概念。
什么是扩展性?
当我们谈论 Python 的扩展性时,实际上指的是让一个 Python 应用具备可扩展的能力。但什么是扩展性呢?
“扩展性是指系统、网络或流程处理不断增加的工作量的能力,或其能够被扩大以适应这种增长的潜力。” —— 维基百科
这个定义使得扩展性难以被绝对界定,因为没有任何一种定义适用于所有类型的应用程序。
本课程聚焦于方法、技术和实践,帮助你使用 Python 编程语言及其主要实现 CPython,构建快速且能够持续增长以应对更多任务的应用程序。
...
扩展
分布式应用
我们都知道,处理器的速度提升已经无法保证单线程应用在未来能处理任意规模的工作负载。这意味着我们必须考虑使用多个处理器。构建可扩展的应用程序,意味着需要将工作负载分配到多个工作节点上,并利用多个处理单元协同工作。
这些工作节点将任务分发到多个处理器上,有时甚至分布在多台计算机之间。
这就是所谓的 分布式应用。
应用类型
在深入学习如何用 Python 或其他语言构建分布式系统之前,必须理解分布式系统的几个基本特性。
在编写应用程序时,我们可以考虑以下几种选择: ### 单线程应用
- 编写单线程应用。这应是你的首选方案,本质上不涉及分布式处理。这类应用是最简单的,易于理解和维护。然而,它们受限于单一处理器的性能。
单线程程序

多线程程序
- 编写多线程应用。如今大多数计算机,包括你的智能手机,都配备了多个处理核心。如果一个应用需要充分利用整个 CPU,就必须通过创建新线程(或新进程)来将工作负载分摊到其他处理器上。多线程应用比单线程应用更容易出错,但相比多节点应用,其失败场景更少,因为不涉及网络通信。
- 编写网络分布式应用。当你的应用需要显著扩展,即使是一台拥有大量 CPU 的大型计算机也无法满足需求时,这才是最后的选择。这类应用编写最为复杂,因为它们依赖网络通信。这意味着存在多种潜在风险,如节点或网络完全或部分失效、高延迟、消息丢失,以及其他与网络不可靠性相关的故障场景。
...
分布式应用
不同类型的分布式架构具有截然不同的特性。在单个处理器上的操作通常被认为是快速、低延迟、可靠且有序的;而跨多个节点的操作则往往较慢、延迟较高,且常常不可靠、无序。
请仔细权衡每种架构选择。正如本课程中所展示的,Python 提供了多种工具和方法,可用于应对上述各种情况。这些工具能够帮助你构建分布式系统,从而实现真正可扩展的应用程序。