← 每日面试题 学习看板

什么是负载均衡,有哪些常见算法?

面试题/02架构设计题/02分布式/06负载均衡与路由/什么是负载均衡,有哪些常见算法?.md

面试记录 2026-09-27

题目:什么是负载均衡,有哪些常见算法?

难度:medium

标签:arch/distributed/loadbalancing, general/knowledge

评分:⭐⭐⭐☆☆(3/5)

我的回答

负载均衡应该算是分布式下的一个内容,它映射的是将大量的请求,单机的请求拆分到多台机器上,通过一定的算法给不同的服务器分送请求。简单的说,负载均衡就是把一批资源均衡的分散给不同的机器,去进行处理,最终提高性能。常见的负载均衡算法有一致性哈希、取模、范围、随机、性能最佳、响应最佳、负载均衡,根据服务的状态去进行均衡的各种算法。

点评

优点:

不足:

补充:

  1. 轮询(Round Robin):默认算法
  2. 加权轮询(Weighted Round Robin):按机器配置权重
  3. 随机(Random):统计上均衡
  4. 加权随机(Weighted Random)
  5. 一致性哈希(Consistent Hashing):扩缩容友好
  6. 最短响应时间(Least Response Time):按历史响应时间选
  7. 最少活跃连接(Least Active/Busy Connections):按并发选

完整讲解

第一部分:知识重点剖析

核心考点定位:考察对负载均衡本质(分发流量提高可用性)和主流算法适用场景的理解。

知识点拆解:

  1. 负载均衡三层:
  1. 常见算法:
  1. 取模的问题:节点数变化时,几乎所有数据都要重新分布,不适合缓存场景
  2. 一致性哈希原理:把所有节点映射到哈希环,请求也映射到环上顺时针取第一个节点;扩容时只影响新节点和邻居节点之间的请求
递进:先按"负载均衡位置"分(网络层/应用层/客户端),再按算法分(简单→复杂→动态)。

第二部分:考察方向与延伸递进

考察方向:

延伸递进面试题:

  1. 一致性哈希如何解决数据倾斜?
  1. 取模在节点扩缩容时有什么问题?
  1. 客户端 LB 和服务端 LB 有什么区别?
  1. Nginx 配置 upstream 时如何选算法?

第三部分:面试者参考回答(300-600 字口语化)

面试官您好,负载均衡是分布式系统里把流量分发到多个后端实例的机制,目的是提高吞吐、隐藏单点故障、支持水平扩展。

核心定义:通过算法把请求分给多台机器,让每台机器的负载接近。

位置分 3 层:

常见算法:

  1. 轮询(Round Robin):最简单,默认算法,同构机器时均衡性好;
  2. 加权轮询:机器异构(8C16G vs 4C8G)时按权重分配,8C16G 权重 4,4C8G 权重 2;
  3. 随机/加权随机:统计上均衡,实现简单;
  4. 一致性哈希:节点扩缩容时只影响 N/K 的请求,避免缓存击穿,配合虚拟节点(一般 150 个/节点)避免数据倾斜;
  5. 最短响应时间:按历史响应时间选,适合后端性能差异大;
  6. 最少活跃连接:按当前并发数选,适合长连接、后端有队列的场景。

典型场景选型:

取模的坑:节点数变了几乎所有 key 都要重分,缓存全失效,所以缓存场景不用取模。