利用横向可伸缩性

Last reviewed 2024-12-30 UTC

Google Cloud 架构完善框架的可靠性支柱中的这一原则提供了一些建议,可帮助您使用横向可伸缩性。通过使用横向可伸缩性,您可以帮助确保Google Cloud 中的工作负载能够高效地进行扩缩并保持性能。

此原则与可靠性的范围界定 重点领域相关。

原则概览

将系统重新设计为横向架构。为了应对流量或数据量的增长,您可以添加更多资源。您还可以在资源不使用时将其移除。

若要了解横向伸缩的价值,请先了解纵向伸缩的限制。

纵向伸缩的常见场景是将 MySQL 数据库用作包含关键数据的主数据库。随着数据库使用量的增加,需要更多 RAM 和 CPU。最终,数据库会达到主机上的内存限制,需要升级。此过程可能需要重复多次。问题在于,数据库的增长量存在硬性限制。虚拟机大小并非不受限制。数据库可能会达到无法再添加更多资源的程度。

即使资源不受限制,大型虚拟机也可能会成为单点故障。主数据库虚拟机出现任何问题都可能会导致错误响应,或导致影响所有用户的系统级中断。避免单点故障,如通过资源冗余构建高可用性系统中所述。

除了这些伸缩限制之外,纵向伸缩往往成本更高。随着计算能力和内存更大的机器被购置,成本可能会呈指数级增长。

相比之下,横向伸缩的费用可能更低。在设计为可伸缩的系统中,横向伸缩的潜力几乎是无限的。

建议

如需从单虚拟机架构过渡到水平多机器架构,您需要仔细规划并使用合适的工具。为帮助您实现横向伸缩,请考虑以下各子部分中的建议。

使用托管式服务

托管式服务无需手动管理横向伸缩。例如,借助 Compute Engine 托管式实例组 (MIG),您可以添加或移除虚拟机,以横向扩缩应用。对于容器化应用,Cloud Run 是一个无服务器平台,可根据传入流量自动扩缩无状态容器。

推广模块化设计

模块化组件和清晰的接口可帮助您根据需要伸缩各个组件,而不是伸缩整个应用。如需了解详情,请参阅性能优化支柱中的推广模块化设计

实现无状态设计

将应用设计为无状态,即不存储任何本地数据。这样一来,您就可以添加或移除实例,而无需担心数据一致性问题。