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 微服务项目实战