Logo
Section 1 / 6

可扩展性

了解可扩展性的含义及其在软件开发中的重要性。

导入

可扩展性

了解可扩展性的含义及其在软件开发中的重要性。

应用程序所承受的负载并不总是稳定的,它可能周期性地变化,并对应用的任何层级产生不利影响。考虑到这一点,可扩展性便成为关键因素。在本节课中,我们将回顾可扩展性的含义、其优势与劣势。

可扩展性

简单来说,可扩展性是一种质量属性,描述了应用程序根据接收请求数量的变化而自动增加或减少处理能力的能力。实际上,这种管理应是自动的:当负载增加时,系统处理该负载的能力也应随之提升。

...
Scalability

可扩展性的优势

可扩展性为公司带来的最重要好处之一是支持业务增长的可能性。这在科技行业中非常普遍:通常,公司在初期运营时并不会面临大量请求;但随着公司规模扩大,请求量也随之上升。因此,可扩展性成为处理所有请求的关键。

另一个重要优势体现在成本方面。当应用首次部署到生产环境时,可能会考虑固定一个较高数量的节点来运行应用。然而,这样做会导致资源和资金的浪费。此外,这种做法也无法保证应用的良好可用性——如果请求量突然增长,系统仍可能崩溃。

缺乏可扩展性的劣势

首先,当负载增加时,应用必须能够有效应对,这意味着响应时间不应受到显著影响。例如,在正常负载下应用响应时间为两秒,那么在高峰期也不应超过三秒。因此,具备可扩展性可以防止应用响应变慢。

其次,若应用不具备可扩展性,最终将完全失效,这种情况对公司造成的负面影响会更加严重。

可扩展性的类型

根据公司的预算、正在构建的应用以及技术需求,可以选择其中一种或两种类型的可扩展性。

垂直可扩展性

垂直可扩展性,也称为“向上扩展”方式。这种方式的核心是在单台机器上增加更多资源,尤其是运行应用的那台机器。可以通过增加内存、CPU,优化网络连接等方式实现。但问题在于硬件成本较高,且某些设备可能不支持特定硬件升级,从而导致资源受限。

...
Vertical scalability

水平可扩展性

也称为“向外扩展”方式,相比增加基础设施而言成本更低。在水平可扩展性中,应用在多台服务器上运行多个副本,相当于构建一个包含多个节点的集群。从表面上看,这是一种较为便捷的方式。但它也存在挑战:例如,需要在所有节点之间同步数据变更,这就要求将相同的应用部署到集群中的多个服务器。此外,还需要一个负载均衡器——用于将请求分发到集群中的各个服务器。

...
Horizontal scalability

核心要点

可扩展性是指应用根据需求自动增减资源以成功处理请求的能力。可扩展性主要分为两种类型:垂直可扩展性和水平可扩展性。

开始使用 DynamoDB

预留容量与DynamoDB自动扩展