4.1.1 可预测伸缩
可预测伸缩是组织希望采用的理想方案。通常,可以采集应用程序工作负载的历史数据,诸如Amazon之类的电子商务网站可能会出现突然的流量高峰,这种情况下需要进行可预测伸缩以避免任何延时问题。这类电子商务网站的流量可能出现以下规律:
□周末的流量是工作日的3倍。
□白天的流量是晚上的5倍。
□购物季(例如感恩节或节礼日)的流量是平常的20倍。
□总体而言,11月和12月节假日期间的流量是其他月份的8~10倍。
你可能已经在使用一些监控工具来监听用户流量,并通过这种方式采集到了历史流量数据,然后你可以基于这些数据对伸缩情况进行预测。可能的伸缩情况包括在工作负载增加时规划更多的服务器,或者添加额外的缓存。像电子商务这类工作负载可能会面临更高的复杂性,并且提供了许多数据点,可以帮助我们理解整体上的设计问题。对于如此复杂的工作负载,可预测伸缩显得尤为重要。
可预测自动伸缩逐渐变得流行,它可以将历史数据和趋势提供给预测算法,这样就可以提前预测给定时间的负载量,然后根据预期的结果配置应用程序伸缩。
为了更好地了解可预测自动伸缩,请查看AWS可预测自动伸缩功能中的指标仪表盘(见图4-1),它抓取了服务器的历史CPU利用率,并在此基础上提供了预测的CPU利用率。
在图4-2所示的截图中,算法会根据预测结果提供至少应该规划多少容量来应对即将到来的流量的建议。
可以看到,一天中不同时间的最小容量有所不同。可预测伸缩可帮助你基于预测结果优化最佳工作负载。可预测自动伸缩有助于降低延时并避免中断,因为添加新资源可能需要一些前置时间。如果在处理网站流量高峰时不能及时地添加额外的资源,那么可能会导致请求过载和流量虚高,因为用户在速度变慢或中断时往往会重复发送请求。
图4-1 可预测伸缩功能的预测示例
图4-2 可预测伸缩功能的容量规划
本节介绍了可预测自动伸缩,但有时,由于工作负载突然增加,因此需要进行被动伸缩。接下来将对被动伸缩进行介绍。