面试题答案
一键面试轮询算法
- 工作原理:按顺序依次将请求分配到各个服务器节点,即从服务器列表的第一个开始,依次循环选择。
- 适用场景:适用于各个服务器处理能力较为均衡的场景,简单易实现,不需要额外的服务器性能信息。例如,多个配置相同的Web服务器处理简单的HTTP请求。
加权轮询算法
- 工作原理:根据服务器的性能为每个服务器分配一个权重值,权重越大,表示该服务器处理能力越强。在分配请求时,按照权重的比例来分配,处理能力强的服务器分配到更多请求。
- 适用场景:适用于服务器性能存在差异的场景。例如,集群中有不同配置的服务器,性能高的服务器权重设置高,可处理更多请求。
随机算法
- 工作原理:从服务器列表中随机选择一个服务器来处理请求。
- 适用场景:适用于对服务器性能差异不敏感,且希望通过随机分配来均匀分散请求的场景,在一定程度上也能实现负载均衡。例如,对一些不太重要且无状态的请求处理,如简单的静态资源请求。
加权随机算法
- 工作原理:结合随机算法和加权算法,根据服务器的权重值,以不同的概率随机选择服务器。权重越高,被随机选中的概率越大。
- 适用场景:类似于加权轮询,适用于服务器性能有差异的场景,相比加权轮询,在分配请求上增加了一定的随机性。
最少连接算法
- 工作原理:优先将请求分配到当前连接数最少的服务器上,认为连接数少的服务器处理能力相对空闲,能更好地处理新请求。
- 适用场景:适用于长连接服务,如数据库连接池等场景,可有效避免某个服务器连接数过多而导致性能瓶颈。
源IP哈希算法
- 工作原理:根据请求源IP地址,通过哈希函数计算出一个哈希值,再将该哈希值与服务器列表的大小进行取模运算,得到的结果对应服务器列表中的某个服务器,将请求分配到该服务器上。这样,来自同一个IP的请求始终会被分配到同一台服务器。
- 适用场景:适用于需要会话保持的场景,如用户登录后某些操作需要在同一台服务器上处理以维持会话状态。