了解我们在中国开展业务的承诺。 阅读全文

横向扩展与纵向扩展的区别是什么?哪种扩展方法最适合 API?

横向扩展是将更多机器添加到系统中来分散负载。纵向扩展是升级单台机器的 CPU、RAM 和存储。具体选择取决于系统架构和应用程序需求。

对应用程序编程接口 (API) 的需求通常并非一成不变。它会随着时间的推移而上下波动。在某些情况下(例如,假日季的流量激增),API 需要处理的请求量可能远高于其他时间段。为了应对流量的增加,有必要扩大 API 的使用规模。扩展 API 时,系统管理员有两种选择。他们可以采用横向扩展,即向集群中添加更多 API 实例;也可以采用纵向扩展,即提升支持 API 的机器的计算能力。本文探讨了两者之间的区别以及哪一种方法最适合 API 可扩展性。

横向扩展

横向扩展(也称为“扩容”)是部署额外的虚拟机 (VM) 以增加 API 容量来处理更多负载的过程。(缩减容量称为“缩容”。)随着所需容量的增加,系统管理员可以向集群中添加更多虚拟机。但是,需要使用专门的资源管理软件来管理 API 调用的负载,将它们路由到集群中正确的虚拟机实例并保持平衡。

纵向扩展

纵向扩展是向单个节点中添加资源的过程。它与用于增加节点的横向扩展形成鲜明对比。纵向扩展(也称为纵向扩容或缩容)意味着向服务器中增加中央处理单元 (CPU) 容量、内存或存储等资源。对于 API,纵向扩展通常是指增加托管该 API 的虚拟机的计算能力。

例如,如果某个 API 托管在分配有一个 CPU 核心和 512 MB 随机存取存储器 (RAM) 的虚拟机上,则对 API 进行纵向扩展可能意味着将核心数量和 RAM 增加一倍。该 API 将拥有两个专用 CPU 处理器内核和 1,024 MB 的 RAM。通过采用这种新配置,该 API 应该能够处理大约两倍的负载,但网络带宽、存储速度和其他因素的限制可能会削弱纵向扩展的效果。纵向扩展也存在资源管理方面的挑战,但专用软件通常可以处理此问题。

API 无状态为什么对于扩展至关重要

API 通常设计为无状态,这意味着它们不会在会话之间存储请求数据或保留信息。在考虑扩展方法时,这种无状态性质至关重要。无状态 API 不需要跨实例复制数据,因而使横向扩展更高效且更易于实施。系统管理员可以根据需要添加或移除虚拟机,同时不会影响 API 运行,因为 API 客户端的运行不依赖于特定的服务器实例。

有状态本身并无不妥。实际上,它对于应用程序的预期运行可能至关重要。但是,对有状态应用程序执行横向扩展要复杂得多。进行横向扩展需要将所存储的数据从应用程序的原始版本复制到新的实例中。

相比之下,无状态应用程序或 API 不会存储请求数据。它不会在内存中保留会话数据。每次会话开始时,就好像是该应用程序第一次与客户端见面。该会话结束后就是“再见”,而不会保留任何关于该会话的记忆。

可以对无状态应用程序进行横向扩展,因为由哪个虚拟机对 API 调用作出响应并不重要。API 客户端可以调用无限数量的托管该 API 的虚拟机,这完全不是问题。系统管理员可以根据自己的需要添加或移除任意数量的虚拟机,同时不会影响 API 的运行。

横向扩展是 API 的正确选择

由于 API 是无状态的,因此横向扩展成为扩展 API 的正确方式。对于无状态 API,通过添加更多虚拟机来增加容量非常有效。管理员可以创建随着 API 需求增长而扩展的虚拟机集群。

此外,虽然纵向扩展 API 是可行的,但横向扩展更可取,因为纵向扩展中的资源分配问题导致其相对难以实现。相比之下,可以轻松对 API 进行横向自动扩展。当系统管理工具检测到 API 流量激增时,它们可自动添加虚拟机以在集群中托管更多的 API 实例。在纵向扩展情况下,这要困难得多,因为自动扩展在纵向扩展中效果不佳。

随着时间的推移,对 API 的需求将不可避免地发生变化。增加或缩减 API 容量必不可少。对于 API,横向扩展和纵向扩展都是可用选项。但是,API 具有无状态性质,再加上横向自动扩展相对更加容易,这使得横向扩展成为扩展 API 的正确方法。

分布式系统和微服务架构

在分布式系统中,API 是微服务架构的一部分,横向扩展尤为有利。每项微服务都可以根据其特定负载和要求进行独立扩展。此模块化方法可以更高效地利用资源并具备更出色的容错能力,因为一项微服务发生故障不会影响其他微服务。

此外,在微服务架构中,横向扩展符合分布式系统的原则,在这些系统中不同的服务部署在多个节点上。这可以确保系统能够处理不同的负载,并且即使在高峰时段也能保持最佳性能。

通过扩展策略最大限度地减少停机时间

在扩展 API 时,停机是一个关键问题,因为任何服务中断都会导致收入损失和客户不满。横向扩展使系统管理员能够在不影响 API 可用性的情况下添加或移除服务器,从而最大限度地减少停机时间。相比之下,纵向扩展可能需要重启服务器或暂时使服务器脱机,这可能会中断服务。

API 提供商可利用横向扩展来确保持续运行,尤其是在计划维护或意外流量高峰期间。通过将负载分配到多个服务器上,横向扩展可确保 API 快速响应并持续可用,即使有个别服务器需要离线进行升级或维修也是如此。

常见问题

横向扩展会对 API 的性能产生积极影响。此方法涉及向您的基础架构中添加更多服务器并在这些服务器之间分配负载。因此,系统可以处理更多并发请求,从而缩短响应时间并提高整体性能。

除了性能优势之外,横向扩展还有助于提高系统的冗余性和可靠性。如果一台服务器发生故障,则负载均衡器会将流量转移到其余能够进行无缝接管的服务器上,从而确保持续运行。这符合 API 安全最佳实践,并且能够增强系统抵御潜在故障的恢复能力。

纵向扩展涉及升级单个服务器的资源以增强其性能。这可以提高 API 请求的处理速度,因为功能更强大的服务器可以处理更高的负载。但是,必须注意的是,纵向扩展可能会带来收益递减。单台机器的升级次数是有限制的。超过某个临界点后,性能提升可能与投入不成正比。

在考虑采用横向扩展还是纵向扩展时,权衡潜在收益与风险至关重要。需要牢记 REST API 安全隐患等问题,并确保系统能够保持对故障的恢复能力。

了解横向扩展与纵向扩展之间的区别非常重要,这有助于确定何时采用哪种扩展方式。

在以下情况下,可以使用纵向扩展:

  • 您的 Web 应用程序处于早期阶段或负载较轻,一台性能强大的服务器即可有效进行处理。当 API 调用需求较低时,尤其适合使用此扩展方式。
  • 应用程序或 API 无法很好地为分布式计算提供支持。在架构或设计不符合横向扩展原则的情况下,纵向扩展可以成为合适的替代方案。

在以下情况下,可以使用横向扩展:

  • 您的应用程序正处于增长阶段,需求很可能会出现激增。横向扩展使基础架构能够根据需要添加更多的服务器,从而适应不断变化的负载。
  • 您需要确保高可用性和冗余性。横向扩展可提供冗余性,使系统具备更出色的故障恢复能力,同时确保即使一台或多台服务器出现故障也能持续运行。

横向扩展与纵向扩展的成本效益取决于应用程序的特定要求、部署规模和整体需求等因素。纵向扩展通常更具成本效益,因为您在扩展时只需购买一两个新组件。但是,当您接近服务器的容量限制时,此方式的成本效益便会降低。

客户为什么选择 Akamai

Akamai 是一家致力于支持并保护在线商业活动的网络安全和云计算公司。我们卓越的安全解决方案、出色的威胁情报和全球运营团队可提供深度防御,保护各地的企业数据和应用程序。Akamai 的全栈云计算解决方案可在海外分布广泛的平台上提供高性能且经济实惠的服务。众多全球企业信赖 Akamai,凭借我们卓越的可靠性、扩展性和专业技术,企业能够从容拓展业务。

相关博文

Akamai DNS Posture Management 简介
借助全新 Akamai DNS Posture Management 解决方案,应对分散的 DNS 基础架构在监测能力、可观察性和可操作性方面带来的挑战。
合规见解:如何阻止横向移动并增强授权管理
在横向移动开始前阻止它。了解如何利用分层安全措施、微分段和智能 API 保护来满足安全合规性法规的要求。
被锁定并遭受勒索:一座城市与网络犯罪分子的较量
阅读本博文,了解提前制定计划并做好相应准备能够如何减轻遭受勒索软件攻击的严重性——或者完全防止该攻击。