8. SpringCloudAlibaba 实践笔记:负载均衡基础知识
负载均衡就是将原本由一台服务器处理的请求根据一定的规则分担到多台服务器上进行处理。
负载均衡根据发生的位置,可以分为服务端负载均衡和客户端负载均衡。
服务端负载均衡
服务端负载均衡指的是在服务端处理负载均衡的逻辑

负载均衡在服务端进行处理,当客户端访问服务端的服务A时,首先访问到服务端的负载均衡器,由服务端的负载均衡器将客户端的请求均匀的分发到服务端部署的两个服务A上。
客户端负载均衡
客户端负载均衡指的是在客户端处理负载均衡的逻辑。

负载均衡逻辑在客户端一侧,客户端应用调用服务端的应用A时,在向服务端发送请求时,就已经经过负载均衡的逻辑处理,并直接向服务端的某个服务发送请求。
常见的负载均衡算法
轮询(Round Robin)
- 原理:
- 按顺序依次将请求分配到各个可用的服务实例上。例如,有三个服务实例 A、B、C,第一次请求会被路由到 A,第二次到 B,第三次到 C,第四次又回到 A,如此循环。
- 特点:
- 简单公平,每个实例都有均等的机会接收请求,不会出现某个实例长时间未被请求的情况,适用于各个实例性能相近的场景。
随机(Random)
- 原理:
- 随机选择一个可用的服务实例来处理请求。每次请求时,从所有可用实例中随机挑选一个。
- 特点:
- 简单快速,不需要维护额外的状态信息。但是可能会导致某些实例在短期内接收过多请求,而有些实例则接收较少请求,不太适合对请求分配均匀性要求较高的场景。
加权轮询(Weighted Round Robin)
- 原理:
- 给每个服务实例分配一个权重值,权重表示该实例相对处理能力的大小。按照权重比例来分配请求,权重越高的实例被选中的概率越大。例如,实例 A 权重为 3,实例 B 权重为 2,实例 C 权重为 1,那么在 6 次请求中,A 可能会被选中 3 次,B 被选中 2 次,C 被选中 1 次(只是大致比例,实际是按权重循环)。
- 特点:
- 可以根据实例的性能差异进行合理的请求分配,适用于实例性能不同的情况,能够更好地利用性能较高的实例。
加权随机(Weighted Random)
- 原理:
- 同样给每个服务实例分配权重,但是是随机选择实例时根据权重来增加选中的概率。权重高的实例被随机选中的可能性更大。
- 特点:
- 结合了随机算法的简单性和加权的灵活性,在一定程度上考虑了实例性能差异,但也可能存在随机性导致的不均匀分配情况。

浙公网安备 33010602011771号