微服务技术常用到负载均衡技术,负载均衡分为客户端负载均衡和服务端负载均衡,本文主要记录客户端负载均衡,关于服务端负载均衡可以参考我的另一篇文章。
客户端负载均衡和服务端负载均衡最大的区别在于服务清单所存储的位置。在客户端负载均衡中,每个客户端服务都有一份自己要访问的服务端清单,这些清单统统都是从Eureka服务注册中心获取的。而在服务端负载均衡中,只要负载均衡器维护一份服务端列表。

image.png

  1. 在消费者微服务中使用Ribbon实现负载均衡,Ribbon 先从EurekaServer中获取服务列表。
  2. Ribbon根据负载均衡算法(默认轮询)去调用微服务。

负载均衡架构(针对上述第二点的详细解释):

image.png

  1. 先选择 Eureka Server ,它优先选择在同一个区域内负载较少的server
  2. 再根据用户指定的策略,在从 Eureka Server 获取的服务注册列表中选择一个地址。其中Ribbon提供了多种策略:比如轮询、随机和根据响应时间加权等。

Q.E.D.


擅长前端的Java程序员