面试题答案
一键面试监控指标选取
- CPU 使用率:反映微服务对计算资源的需求,若长期处于高位,表明计算资源紧张,可能需扩容;长期低位则可考虑缩容。
- 内存使用率:衡量微服务对内存资源的占用情况,内存不足会导致性能下降甚至服务崩溃,是判断是否需要伸缩的重要指标。
- 请求响应时间:体现微服务处理请求的速度,响应时间变长,可能服务负载过高,需增加资源。
- 请求吞吐量:表示单位时间内微服务处理的请求数量,吞吐量接近或达到极限时,需考虑扩容。
- 队列长度:在消息队列等场景下,队列长度反映任务积压情况,长度持续增长,意味着处理能力不足,需扩容。
阈值设定
- 基于历史数据:分析微服务历史运行数据,找出不同业务场景下指标的正常波动范围,以此设定初始阈值。如业务高峰时段 CPU 使用率常达 80%,可将扩容阈值设为 85%,缩容阈值设为 60%。
- 结合业务需求:根据业务对服务性能的要求设定阈值。若对响应时间要求极高,如响应时间超过 200ms 就影响业务,可将响应时间的扩容阈值设为 150ms。
- 动态调整:随着业务发展和运行环境变化,阈值需动态调整。通过机器学习算法分析实时指标数据,自动优化阈值。
伸缩算法选择
- 基于规则的算法:根据设定的阈值和规则进行伸缩。如 CPU 使用率超过 80% 则增加一个实例,低于 60% 则减少一个实例。优点是简单易实现,缺点是缺乏灵活性,难以适应复杂多变的场景。
- 预测性算法:利用机器学习、时间序列分析等技术,根据历史数据预测未来的负载情况,提前进行伸缩操作。能有效避免滞后性,但对数据质量和算法准确性要求高。
- 混合算法:结合基于规则和预测性算法的优点,平时使用基于规则的算法,在特定时间段或业务场景下切换到预测性算法。如业务高峰时段采用预测性算法,低谷时段采用基于规则的算法。