GitHub地址:https://github.com/leebingbin/SpringCloud.MovieTicketing
在上篇博客《Spring Cloud版——电影售票系统<—>微服务注册与发现》中,已经实现了微服务的注册与发现。启动各个微服务时,Eureka Client会把自己的网络信息注册到Eureka Server。然而,这样的架构依然有一些问题,比如负载均衡。一般来说,各个微服务都会部署多个实例。那么服务消费者要如何将请求分摊到多个服务者实例上呢?
一、Ribbon简介
Ribbon 是 Netflix 发布的负载均衡器,它有助与控制HTTP和TCP客户端的行为。为Ribbon配置服务提供者地址列表后,Ribbon就可基于某种负载均衡算法,自动地帮助服务消费者去请求。Ribbon 默认为我们提供了很多的负载均衡算法,例如轮询,随机等。当然,我们也可以为Ribbon实现自定义的负载均衡算法。
在Spring Cloud中,当Ribbon 和 Eureka 配合使用时, Ribbon可自动从Eureka Server获取服务提供者地址列表,并基于负载均衡算法,请求其中一个服务提供者实例。
Eureka 与 Ribbon 配合使用架构如下:
Tips:为项目引入Ribbon的依赖,Ribbon的依赖是:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>
但通常都不用单独添加这个依赖的,因为这个依赖已经包含在spring-cloud-starter-ribbon,无须再次引入。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>