微服务4 Ribbon实现客户端负载均衡
1. 创建Spring-boot项目ribbon-consumer,添加eurekadiscovery(上文)和ribbon依赖。
2. 或者直接在pom文件中加入依赖。
3. 在启动类上加注解@EnableEurekaClient,使其作为Eureka客户端注册,并在启动类中注入RestTemplate实例,以此来实现负载均衡,具体如下:
4. 创建controller包名,在该包中创建RibConsHelloController类,在该类中实现服务消费,即调用hello-service服务。
使用RestTemplate对象的getForObject方法调用服务,其中第一个参数:将要调用服务的URL,注意:此处使用的是服务名(不区分大小写);第二个参数:调用该服务返回的类型。
5. 修改ribbon-consumer的application.properties文件,指定其端口号、服务名、服务注册中心地址等。
6. 开启eureka-server、ribbon-consumer服务。
7. 开启两个不同端口号的hello-service服务,具体实现如下:
1) 点击EidtConfigurations--à取消右上角的 “Single instance only”.
2) 修改hello-service服务的application.yml/properties文件。上一篇中为了实现高可用服务注册中心,我们配置了两个服务注册地址,此节为了简单,我们直接将服务注册地址配置为http://localhost:1111/(eureka-server的application.yml文件的端口号)
3) 启动hello-service服务(第一个,端口号为8081)。
4) 再次修改hello-service服务的application.yml/properties文件。
修改其端口号server.port=8082
5) 再次启动hello-service服务(第二个,端口号为8082)。
开启不同端口号的服务,我们也可以使用上一篇中配置不同服务注册中心的方法,详情请参见2018/1/4篇《微服务3 高可用服务注册中心搭建》
8. 访问http://localhost:1111/,我们会看到有一个ribbon-consumer和两个hello-service。
9. 为了验证我们是否实现了负载均衡功能,我们修改一下hello-service服务中的Controller的具体实现,返回具体的实现端口。
10. 访问http://localhost:7070/hi/,用ribbon-consumer调用hello-service服务。
刷新一次,
可以看到ribbon-consumer两次调用是调用的不同的hello-service,即实现了负载均衡。
教程中所有代码小编亲自测试成功,如有疑问,请留言,谢谢支持。