Google Cloud 架构框架的可靠性支柱中的这一原则提供了建议,可帮助您使用横向可伸缩性。通过使用水平可伸缩性,您可以帮助确保Google Cloud 中的工作负载能够高效扩容并保持性能。
此原则与可靠性的范围 重点领域相关。
原则概览
将系统重新架构为横向架构。如需应对流量或数据增长,您可以添加更多资源。您还可以在不使用资源时将其移除。
如需了解横向伸缩的价值,请考虑纵向伸缩的限制。
纵向伸缩的常见场景是将 MySQL 数据库用作包含关键数据的主数据库。随着数据库使用量的增加,需要更多的 RAM 和 CPU。最终,数据库会达到主机的内存限制,并且需要升级。此过程可能需要重复多次。问题在于,数据库的增长大小存在硬限制。虚拟机大小并非无限大。数据库可能会达到无法再添加更多资源的程度。
即使资源无限,大型虚拟机也可能会成为单点故障。主数据库虚拟机出现的任何问题都可能会导致错误响应,或导致影响所有用户的系统级服务中断。避免单点故障,如通过冗余资源构建高可用性系统中所述。
除了这些伸缩限制之外,纵向伸缩的成本往往更高。随着计算能力和内存越来越大,费用可能会呈指数级增加。
相比之下,横向伸缩可以降低费用。在可伸缩的系统中,横向扩展的潜力几乎是无限的。
建议
如需从单个虚拟机架构过渡到横向多机架构,您需要仔细规划并使用合适的工具。为了帮助您实现横向伸缩,请考虑以下子部分中的建议。
使用代管式服务
借助托管式服务,您无需手动管理横向伸缩。例如,借助 Compute Engine 托管式实例组 (MIG),您可以添加或移除虚拟机,以横向扩缩应用。对于容器化应用,Cloud Run 是一个无服务器平台,可根据传入流量自动扩缩无状态容器。
提倡模块化设计
模块化组件和清晰的接口可帮助您根据需要伸缩各个组件,而不是伸缩整个应用。如需了解详情,请参阅性能优化支柱中的提倡模块化设计。
实现无状态设计
将应用设计为无状态,即不存储本地数据。这样一来,您就可以添加或移除实例,而无需担心数据一致性。