面试题答案
一键面试1. 随机(Random)
- 工作原理:从服务实例列表中随机选择一个实例来处理请求。
- 适合场景:适用于对性能要求不是特别高,且希望在多个实例间较为均匀分配请求的场景,比如一些简单的展示类应用,每个实例处理能力大致相同,通过随机策略可以在一定程度上分摊负载。
2. 轮询(Round Robin)
- 工作原理:按照顺序依次将请求分配到每个服务实例上,当到达列表末尾时,又重新从列表开头开始分配。
- 适合场景:适用于各个实例处理能力相近的场景,能较为公平地将请求分配到各个实例,如常规的业务服务,每个实例都能稳定处理类似量级的请求。
3. 加权轮询(Weighted Round Robin)
- 工作原理:为每个服务实例分配一个权重,权重越高被选中的概率越大。在轮询过程中,根据权重比例来分配请求,权重高的实例会被更多地分配到请求。
- 适合场景:当不同实例的处理能力存在差异时使用,例如有些实例配置更高、性能更强,就可以给它设置更高的权重,让它处理更多请求,以充分利用资源。
4. 最少连接(Least Connections)
- 工作原理:优先将请求分配给当前连接数最少的服务实例,认为连接数少的实例有更多资源来处理新请求。
- 适合场景:适用于长连接场景,如数据库连接池管理等,能有效避免某个实例因为连接数过多而性能下降。
5. 源地址哈希(Hash based on source IP)
- 工作原理:根据请求源地址的哈希值,将请求分配到固定的服务实例上,这样来自同一个源地址的请求始终会被路由到同一个实例。
- 适合场景:适用于需要保持会话粘性的场景,比如用户登录后,后续请求希望始终由同一实例处理,以避免重新认证等操作。