面试题答案
一键面试- 轮询(Round Robin)
- 适用场景:适用于微服务实例处理能力较为均衡的场景。每个实例接收请求的机会均等,在大多数情况下能较为公平地分配负载。例如,多个微服务实例提供相同的基础数据查询功能,且它们的硬件资源和处理性能相近,使用轮询算法可以简单有效地将请求均匀分发到各个实例上。
- 加权轮询(Weighted Round Robin)
- 适用场景:当微服务实例的处理能力存在差异时适用。根据实例的性能为其分配不同的权重,性能强的实例权重高,接收的请求比例相对较大。比如在一个微服务集群中,部分实例部署在性能较高的服务器上,部分在性能稍差的机器上,通过加权轮询可以让性能好的实例承担更多的请求,充分利用其资源。
- 最少连接(Least Connections)
- 适用场景:适合处理长连接请求的微服务场景。优先将请求分配给当前连接数最少的实例,能保证每个实例的连接负载相对均衡。例如在实时通信类微服务中,每个客户端与服务器保持长连接,使用最少连接算法可以避免某个实例因连接数过多而性能下降。
- 加权最少连接(Weighted Least Connections)
- 适用场景:结合了加权和最少连接的特点,适用于微服务实例处理能力不同且处理长连接的场景。不仅考虑实例当前的连接数,还结合其处理能力权重来分配请求。比如在大型电商微服务架构中,不同规格服务器上部署的订单处理微服务实例,既存在处理能力差异,又涉及大量长连接订单跟踪请求,加权最少连接算法可实现更合理的负载分配。
- 源IP哈希(Source IP Hash)
- 适用场景:适用于需要保证特定客户端请求始终被路由到同一微服务实例的场景。通过对客户端源IP进行哈希计算来分配请求,能实现会话粘性。例如,在用户认证相关的微服务中,为了确保同一用户的所有请求都由同一认证实例处理,避免认证状态不一致问题,可采用源IP哈希算法。