云弹性是云计算的一项关键优势,它让公司的云基础设施能够根据需求自动增加或减少其资源。云弹性的核心意义在于,无需人工干预即可适应不可预测的工作负载变化。
例如,一个电子商务网站可能会在“黑色星期五”这样的节日期间迎来巨大的流量激增。借助弹性计算,该网站会自动获取更多服务器来应对流量高峰,从而确保客户拥有顺畅的购物体验。一旦节日结束,系统就会将资源缩减到正常水平。
系统可以使用两种主要弹性方法:横向弹性方法和纵向弹性方法。
这也称为“横向扩容”或“横向缩容”。它涉及向您的系统中添加或从您的系统中移除更多的机器或实例。当您需要更多容量时,可以添加更多服务器。当您需要的容量减少时,可以将其移除。这通常用于可以拆分并同时在多台服务器上运行的应用。
这也称为“纵向扩容”或“纵向缩容”。这涉及增加或减少单个机器的资源。例如,如果您需要为特定服务器提供更多算力,则会为其增加 CPU、内存或存储空间。当任务完成后,您可以减少这些资源。
虽然“弹性”和“可伸缩性”这两个术语经常一起使用,但它们描述的是不同的概念。
可以这样理解:可伸缩性就像为了一场大型马拉松而进行数月的训练。弹性就像一名跑者,能够在比赛中实时加速或减速,以匹配其他跑者的节奏。
弹性计算可为企业和开发者带来许多潜在优势。
成本效益
弹性计算可以帮助您节省费用,因为您只需为使用的资源付费。在需求较低时,您无需让额外的服务器保持运行,从而减少不必要的支出。您还可以避免购买昂贵的硬件来应对每年仅出现几次的流量高峰。
高可用性和可靠性
通过自动调整资源,弹性计算有助于确保您的应用即使在意外的流量高峰期间也能保持可用和快速响应。这可以防止出现可能使用户感到沮丧或损害您企业声誉的系统变慢或崩溃问题。
性能改进
系统会在需要时自动添加资源,这有助于保持快速的响应时间和流畅的用户体验。这对于具有不可预测工作负载的应用尤为重要,例如在线游戏、在线媒体服务或电子商务。
简化管理
由于扩缩过程是自动化的,因此开发者和 IT 团队无需手动监控和调整资源。这可以节省时间和精力,从而专注于其他重要的任务,例如开发新功能或提升用户体验。
对于企业环境中的开发者来说,弹性计算不仅仅是一项功能,更是一项重要的策略,可以帮助构建弹性好、成本效益高且性能出色的应用。它的核心在于设计能够智能地适应不可预测工作负载的系统,从而避免资源过度预配和资源预配不足。这对于必须全天候保持可用性的任务关键型应用(例如电子商务平台、金融服务或数据处理流水线)尤为重要。
云弹性是 Compute Engine 托管式实例组 (MIG) 运作方式背后的核心原理。您可以设计一个能够自动适应需求变化的系统,而不是手动预配虚拟机来处理流量。MIG 是一组相同的虚拟机,您可以将其作为一个实体进行管理,它是用于在 Compute Engine 上构建弹性系统的主要工具。MIG 使用自动扩缩器根据预定义的指标自动向组中添加或从组中移除虚拟机,从而实现弹性。
以下是企业开发者如何实际应用这些概念来构建可扩缩系统的方法:
创建虚拟机蓝图:实例模板 | 在创建弹性系统之前,您需要一个实例模板。此模板作为应用虚拟机配置的单一可信来源,其中包含机器类型、启动磁盘和任何必要的启动脚本。这可确保每个新的虚拟机都是上一个虚拟机的精确副本,从而提高一致性并简化部署。 |
配置托管式实例组 | 前往 Google Cloud 控制台中的“实例组”页面,创建一个新的托管式实例组。选择您创建的实例模板,设置实例数量下限和上限,并为您的实例组选择可用区,以确保冗余和高可用性。 |
实现自动扩缩规则 | 这是云弹性的核心所在。企业开发者可以实现基于 Cloud Monitoring 指标(例如后端工作器服务的队列长度)的高级自动扩缩规则,或者使用预测性自动扩缩,利用历史数据在预期流量高峰到来之前启动新的虚拟机,而非进行简单的基于 CPU 的扩缩。 |
添加负载均衡器 | 对于任何面向公众的应用,负载均衡器都是必不可少的,它可以将传入的用户流量分配到托管式实例组中的所有虚拟机,确保没有单个虚拟机过载,并确保应用保持高可用性。 |
创建虚拟机蓝图:实例模板
在创建弹性系统之前,您需要一个实例模板。此模板作为应用虚拟机配置的单一可信来源,其中包含机器类型、启动磁盘和任何必要的启动脚本。这可确保每个新的虚拟机都是上一个虚拟机的精确副本,从而提高一致性并简化部署。
配置托管式实例组
前往 Google Cloud 控制台中的“实例组”页面,创建一个新的托管式实例组。选择您创建的实例模板,设置实例数量下限和上限,并为您的实例组选择可用区,以确保冗余和高可用性。
实现自动扩缩规则
这是云弹性的核心所在。企业开发者可以实现基于 Cloud Monitoring 指标(例如后端工作器服务的队列长度)的高级自动扩缩规则,或者使用预测性自动扩缩,利用历史数据在预期流量高峰到来之前启动新的虚拟机,而非进行简单的基于 CPU 的扩缩。
添加负载均衡器
对于任何面向公众的应用,负载均衡器都是必不可少的,它可以将传入的用户流量分配到托管式实例组中的所有虚拟机,确保没有单个虚拟机过载,并确保应用保持高可用性。