面试题答案
一键面试协调机制原理
引入一个中央协调器,负责收集各微服务的CPU使用率及伸缩请求等信息。基于全局视角,综合考虑各微服务资源依赖关系、优先级差异,通过一定算法决定哪些微服务可以进行伸缩操作,避免多个微服务同时无序伸缩引发系统震荡。
实现步骤
- 数据收集:各微服务定期向中央协调器上报自身CPU使用率、当前资源使用情况、伸缩请求(如期望增加或减少的实例数)等数据。
- 依赖关系梳理:在系统初始化或微服务变更时,各微服务向协调器报备其对其他微服务的资源依赖,例如A微服务依赖B微服务的某些接口或数据,且依赖程度分为强依赖(A无法工作若无B)和弱依赖(A性能受影响若无B)。
- 优先级设定:为每个微服务设定优先级,例如核心业务微服务优先级高,辅助性微服务优先级低。优先级可根据业务重要性、对用户体验的影响等因素确定。
- 算法决策:中央协调器采用如贪心算法或加权公平调度算法,综合CPU使用率、资源依赖和优先级进行决策。对于强依赖关系,先满足被依赖微服务的伸缩需求;对于优先级高的微服务优先处理其伸缩请求。
- 指令下发:协调器根据决策结果,向相应微服务发送允许或禁止伸缩的指令,微服务按指令执行伸缩操作。
应对资源依赖和优先级差异问题
- 资源依赖处理:
- 强依赖:若A强依赖B,当B触发伸缩时,优先处理B的伸缩请求,确保B资源充足后,再评估A是否需要伸缩以及能否进行伸缩。若A触发伸缩,需先判断B是否有足够资源支持A的伸缩需求,若不足则暂停A的伸缩,优先调整B的资源。
- 弱依赖:当有多个微服务触发伸缩且存在弱依赖关系时,优先处理优先级高的微服务伸缩请求。同时,评估弱依赖微服务伸缩对依赖方的性能影响,若影响在可接受范围内则进行伸缩。
- 优先级差异处理:在算法决策阶段,为高优先级微服务赋予更高权重。例如在计算是否允许伸缩时,高优先级微服务的CPU使用率阈值可相对较低,即更容易触发伸缩,以保证核心业务的稳定性和性能。在资源有限的情况下,优先满足高优先级微服务的伸缩需求,低优先级微服务可能需等待或减少伸缩幅度。