Spring Cloud 负载均衡

本文将说明负载均衡的基本概念,并介绍 Spring Cloud LoadBalancer。

一、为什么需要负载均衡?

负载均衡,Load Balance,其含义是指将任务平均分摊,使得服务集群中的多台节点可以协同工作。

二、服务器负载均衡和客户端负载均衡

1. 服务器负载均衡

服务器负载均衡,又被称为网关层负载均衡。

服务器负载均衡会在服务集群之前设置一个中心化的负载均衡器,例如 API Gateway 服务。请求不会直接发生到目标节点,而是会发送给负载均衡器,由负载均衡器根据配置的策略将请求转发到某个具体节点。

服务器负载均衡的好处是:

  • 客户端不需要拉取完整节点列表
  • 客户端不需要关心使用何种负载均衡策略

服务器负载均衡的坏处是:

  • 每次请求都需要由负载均衡器转发,这将带来额外的网络开销
  • 增加了一个中间层,增加了系统复杂性

2. 客户端负载均衡

客户端存有完整的服务节点列表,请求时根据负载均衡策略选择某个具体节点。

客户端的好处是:

  • 请求不需要被转发
  • 各个客户端可以根据自己的情况灵活指定负载均衡策略

客户端的坏处是:

  • 客户端需要维护服务节点列表,因此往往需要依赖服务发现技术

三、Spring Cloud LoadBalancer

1. 什么是 Spring Cloud LoadBalancer?

Spring Cloud LoadBalancer 是 Spring Cloud 提供的客户端负载均衡器。

2. 负载均衡策略

LoadBalancer 提供了两种内置负载均衡策略:

  • RandomLoadBalancer:在节点列表中随机挑选一台服务器
  • RoundRobinLoadBalancer:设置一个计数器,按顺序依次调用每个服务
  • 此外,还可以自定义负载均衡策略

3. 示例

具体请看:

Spring Cloud 服务治理 - 服务发现

参考

  • Spring Cloud 微服务项目实战