云环境中的自动伸缩与最终一致性策略
1. 自动伸缩规则概述
自动伸缩规则能够有效降低成本,以下是一些示例规则:
- 周五晚上7点,将Web服务器节点数量减少到1个。
- 若过去一小时内平均队列长度小于25,则将发票处理节点数量增加1个。
- 若过去一小时内平均队列长度小于5,则将发票处理节点数量减少1个。
- 若过去一小时内确认客户订单的平均时间超过十分钟,则将订单处理节点数量增加1个。
这些规则可分为主动规则(如定时更改、设置实例数量的最小和最大值等约束规则)和被动规则(对环境信号做出响应),并且可以设置优先级和调度时间,例如部分规则可限制在非周末运行。
2. 自动伸缩的关键要点
2.1 分离关注点
不同的规则可以应用于应用程序的不同部分,例如Web服务器节点和发票处理节点。这意味着可以独立扩展应用程序的各个部分,这是成本优化的重要特性。当定义的伸缩单元需要同步分配资源时,可以将它们组合在自动伸缩规则中。
2.2 积极应对水平扩展
云资源供应不是即时的,部署和启动新的计算节点可能需要十分钟或更长时间。为了提供流畅的用户体验,应选择能够尽早响应趋势的规则,确保在需求到来时容量足够。一些应用程序会采用N + 1规则,即部署N + 1个节点,即使当前活动只需要N个节点,这样可以在活动突然激增或节点出现硬件故障时提供缓冲。
2.3 谨慎应对水平收缩
自动伸缩工具应具备与云平台相关的智能,避免过于频繁地操作。例如,在Amazon Web Services和Windows Azure上,计算节点按小时计费。释放节点时