MST

星途 面试题库

面试题:容器化下复杂业务的弹性伸缩策略设计

假设你负责一个电商系统的后端容器化开发,在促销活动期间,系统会面临流量的大幅波动。请设计一套基于容器编排的弹性伸缩策略,确保系统既能应对高流量,又能在流量低谷时合理利用资源,需详细说明涉及到的指标监控、伸缩规则以及如何处理可能出现的伸缩频繁问题。
20.2万 热度难度
后端开发容器化

知识考点

AI 面试

面试题答案

一键面试

指标监控

  1. CPU 使用率:通过容器编排工具(如 Kubernetes)内置的监控组件,实时监控容器及节点的 CPU 使用率。设置一个合理的阈值,比如 70%作为高流量预警,30%作为流量低谷参考。
  2. 内存使用率:同样利用监控组件监控内存使用情况,设置例如 80%为高水位,40%为低水位。因为电商系统在处理订单、缓存数据等操作时对内存有一定需求,内存使用率过高可能导致服务性能下降。
  3. 请求响应时间:在应用层集成监控工具,监控关键 API 的平均响应时间。当响应时间超过某个设定值(如 200ms),说明系统处理能力接近瓶颈,可能需要扩容。
  4. 每秒请求数(QPS):通过负载均衡器或应用内统计模块,统计每秒到达系统的请求数量。设置一个流量高峰的 QPS 阈值,例如 10000 次/秒,当 QPS 持续超过该值时考虑扩容;流量低谷阈值设为 1000 次/秒,持续低于该值考虑缩容。

伸缩规则

  1. 扩容规则
    • 当 CPU 使用率连续 5 分钟超过 70%,或内存使用率连续 5 分钟超过 80%,或 QPS 连续 5 分钟超过 10000 次/秒,或关键 API 平均响应时间连续 5 分钟超过 200ms 时,触发扩容操作。
    • 根据当前系统资源使用情况及历史流量数据,每次扩容增加一定数量的容器实例。例如,先增加当前实例数的 20%,如果资源紧张情况仍未缓解,持续监控并逐步增加扩容比例,但每次扩容比例不超过 50%,以避免过度扩容。
  2. 缩容规则
    • 当 CPU 使用率连续 10 分钟低于 30%,且内存使用率连续 10 分钟低于 40%,且 QPS 连续 10 分钟低于 1000 次/秒时,触发缩容操作。
    • 每次缩容减少当前实例数的 10% - 20%,避免缩容过快影响系统稳定性。缩容后持续监控指标,若指标又达到扩容条件,则重新进行扩容。

处理伸缩频繁问题

  1. 设置合理的时间窗口:如上述扩容和缩容规则中,设置较长的连续监控时间窗口(如 5 分钟、10 分钟),避免因短时间内指标波动导致频繁伸缩。只有当指标在较长时间内持续满足条件才进行伸缩操作。
  2. 引入滞后策略:在缩容时,设置比扩容更高的阈值。例如,扩容时 CPU 使用率阈值为 70%,缩容时 CPU 使用率阈值设为 50%。这样可以在指标波动时,避免在阈值附近频繁切换扩容和缩容操作。
  3. 基于预测的伸缩:结合历史流量数据和机器学习算法,对流量趋势进行预测。提前在流量高峰到来前进行扩容,在流量低谷来临前进行缩容,减少实时监控指标波动带来的频繁伸缩。例如,根据以往促销活动的流量曲线,在活动开始前 1 - 2 小时提前进行一定规模的扩容。