分布式服务的负载均衡与Raft共识实现
1. 负载均衡策略
为了解决服务发现和负载均衡问题,有三种策略可供选择:
1. 服务器代理 :客户端将请求发送给负载均衡器,负载均衡器通过查询服务注册表或自身作为服务注册表来了解服务器信息,然后将请求代理到后端服务。这种方式是最常用的发现和负载均衡模式,可作为客户端和服务器之间的信任边界,便于控制请求摄入。例如,AWS的Elastic Load Balancer(ELB)常用于平衡来自互联网的外部流量。
2. 外部负载均衡 :客户端查询一个知道服务器信息的外部负载均衡服务,该服务会告知客户端将RPC请求发送到哪个服务器。这种方式适用于复杂且需要高精度负载均衡的场景,但会带来较高的操作负担。
3. 客户端侧负载均衡 :客户端查询服务注册表以了解服务器信息,选择要发送RPC请求的服务器,并直接将请求发送到该服务器。这种方式可减少延迟、提高效率,且具有弹性,因为不存在单点故障。但需要在网络和安全方面进行处理,以允许客户端直接访问服务器。
由于我们可以控制客户端和服务器,并且服务设计用于低延迟、高吞吐量的应用程序,因此将采用客户端侧发现和负载均衡。
负载均衡策略 | 优点 | 缺点 | 适用场景 |
---|---|---|---|
服务器代理 | 常用,可作为信任边界,便于控制请求摄入 |