虽然可伸缩性和弹性经常互换使用,但它们是不同的概念。两者都与系统处理不断变化的需求的能力有关,但实现方式不同。
可伸缩性是指系统通过随着时间的推移添加资源来处理不断增长的工作量的能力。这通常是一种有计划的长期方法,旨在满足不断增长的需求。例如,一家公司可能会计划扩容数据库资源,以应对即将到来的大型营销活动,预计该活动将带来更多用户。它是指系统能够扩展以满足未来的增长需求。
弹性是指系统能够根据需求的变化,自动、快速地实时调整资源。可以将它想象成一根可以伸缩的橡皮筋。例如,电子商务网站可能会设计为在黑色星期五等节日期间自动添加更多服务器来处理突然激增的流量,然后在流量下降时减少服务器数量。弹性是指根据当前需求动态地按需进行调整,这有助于优化成本和性能。
云可伸缩性主要有两种形式:纵向扩缩和横向扩缩。正确的方法取决于应用的架构和工作负载的性质。
纵向扩缩也称为“纵向扩容”或“纵向缩容”,是指在单个服务器或机器中添加或移除资源的过程。这就像用更快的处理器或更大的 RAM 升级一台计算机。目标是让一台机器变得更强大。
纵向扩缩的工作原理
您可以增加现有虚拟机 (VM) 的容量,从而进行纵向扩缩。例如,如果您的应用在具有一定数量的 CPU 核心和一定内存量的虚拟机上运行,您只需选择具有更多资源的更大虚拟机即可扩容。同样,您也可以通过改用较小的虚拟机来纵向缩容。
横向扩缩也称为“横向扩容”或“横向缩容”,是指增加系统中机器或节点的数量,以便更有效地分配工作负载。这就像在网络中添加更多计算机来分担工作。目标是使用多台机器来增加容量,而不是让一台机器变得更强大。
横向扩缩的工作原理
横向扩缩是指在多个虚拟机上运行应用,然后由负载均衡器将传入流量分配到这些虚拟机。随着需求增加,您可以自动或手动向群组添加更多虚拟机。当需求减少时,您可以移除这些节点。
选择纵向扩缩还是横向扩缩取决于应用的架构和业务需求。
特征 | 纵向扩缩 | 横向扩缩 |
复杂性 | 更简单,因为它只涉及一台机器。 | 更复杂,因为它需要管理多个节点和一个负载均衡器。 |
停机时间 | 升级期间可能会导致短暂的服务中断。 | 通常不会停机,因为添加新机器不会中断现有机器。 |
可伸缩性限制 | 受单台机器物理容量的限制。 | 几乎没有限制,您可以根据需要添加任意数量的机器。 |
容错性 | 存在单点故障;如果机器出现故障,应用将不可用。 | 高容错能力;如果一台机器发生故障,其他机器可以继续运行。 |
特征
纵向扩缩
横向扩缩
复杂性
更简单,因为它只涉及一台机器。
更复杂,因为它需要管理多个节点和一个负载均衡器。
停机时间
升级期间可能会导致短暂的服务中断。
通常不会停机,因为添加新机器不会中断现有机器。
可伸缩性限制
受单台机器物理容量的限制。
几乎没有限制,您可以根据需要添加任意数量的机器。
容错性
存在单点故障;如果机器出现故障,应用将不可用。
高容错能力;如果一台机器发生故障,其他机器可以继续运行。
对于初始性能增强,纵向扩缩可能是最有效的方法。随着应用规模的扩大,对可用性的要求也越来越高,此时,改用横向扩缩可能更合适。混合方法有时也称为“对角扩缩”,它也结合了这两种方法。
虽然许多提供方都提供标准扩缩功能,但 Google Cloud 提供了一套差异化的灵活工具,旨在满足现代应用不断变化的需求。从采用机器学习技术的预测到独特的混合功能,这些产品和服务可以帮助您更有效地优化性能和成本。
传统自动扩缩是反应式的,它只在需求已经飙升后才添加资源,这有时会导致短暂的性能滞后。Compute Engine 预测性自动扩缩通过使用机器学习根据历史数据预测未来负载,来解决此问题。它可以根据预测的流量提前扩容基础设施,帮助确保您的应用在需求出现时就能为用户提供服务。
大多数云服务提供商都会强制您从预定义的“T 恤尺码”中选择虚拟机,这通常会导致您为不需要的资源付费。Google Cloud 提供自定义机器类型,让您可以根据工作负载的需求定制 vCPU 的确切数量和内存量。这种精细控制有助于您高效地纵向扩缩基础设施,让资源适应任务,而不是让任务适应资源。
对于拥有本地基础设施的组织来说,处理突如其来的流量高峰可能是一项挑战。云爆发可让您在私有数据中心达到容量上限时,将多余流量无缝“爆发”到公有云。Google Cloud 的混合云和多云解决方案(例如 GKE Enterprise)可提供跨环境管理工作负载所需的一致性和灵活性,确保您可以无限扩缩,而无需放弃现有投资。
可伸缩性不仅仅是添加服务器,而是要高效地将流量导向这些服务器。Google Cloud Load Balancing 使用单个全局任播 IP 地址将流量分配到全球各地的资源。这样,您就可以在全球范围内扩缩应用,而无需进行复杂的 DNS 设置或处理区域碎片化问题,确保用户始终路由到最近的具有可用容量且健康状况良好的实例。
云的可伸缩性可以带来一些重要的好处,而这些好处很难通过传统的本地基础设施实现。
成本效益
您可能会避免过度预配资源,并节省维护空闲硬件的高昂成本。借助云的可伸缩性,您只需为使用的资源付费,从而将固定成本转化为可变成本。
提升性能和可用性
通过动态调整资源,您的应用可以更轻松地保持高性能,即使在需求高峰期也是如此,从而避免可能让用户感到沮丧的运行缓慢和服务中断问题。
应对不可预测的需求
可伸缩性可帮助您处理意外的流量高峰(例如社交媒体帖子爆红带来的流量高峰),而无需手动添加新硬件。
业务敏捷性
快速扩缩的能力有助于您更快地进行创新并应对市场变化。您可以部署新功能或应用,而无需等待基础设施设置完毕。
Google Cloud 提供了一系列旨在帮助您构建高度可扩缩应用的服务。其中许多服务都内置了自动扩缩功能,因此您无需管理底层基础设施。


