写在前面:后续的文章都是基于第一篇文章进行更新,我是按照SpringCloud学习顺序进行文章编写,因为项目只有一个项目,需要了解SpringCloud前面skill的可以看一下前面SpringCloud体系。
负载均衡的概念的很多人应该都很熟悉,我们熟悉的nginx当我们访问请求时,nginx服务器会根据我们配置的负载均衡策略将请求分配到不同的服务器,ribbon就不同了,我们的消费者从服务注册中心可以知道哪些地址可以使用,从这些地址地址中选出一个格式的服务器。
具体的实现如下:
由于ribbon的负载均衡是消费者去选择,而不是服务器(nginx)选择,所有在消费模块里面进行配置就ok。
首先消费者模块引入Ribbon的依赖:
<!-- Ribbon相关 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
修改application.yml,增加如下内容:
eureka:
client:
register-with-eureka: false
service-url:
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
增加 负载均衡策略配置在之前的restTemplate增加注解@LooadBalance,这个注解可以让RestTeplate在请求时拥有客户端负载均衡的能力
在启动类增加启用负载均衡注解 @EnableEurekaClient,标注消费者为为Eureka的客户端,修改客户端的controller层访问地址。我们之前使用nginx的时候都是看着访问一个地址,至于最后访问的是哪台机器,由nginx服务器决定的,现在有点类似,本质不是一样。
这样我们就完成了Ribbon和Consume的整合,可以直接调用服务而不用关心地址和端口号。
服务启动顺序
1.启动Eureka服务集群,
2.启动服务提供者
3.启动consumer
测试访问地址