《spring cloud微服务实战》读书笔记——Spring Cloud Eureka(四)服务的发现和消费

来源:互联网 发布:秋风印花分色软件 编辑:程序博客网 时间:2024/05/16 15:55

回顾前面内容,我们已经搭建了一个高可用的服务注册中心,并且将服务的提供者注册到了高可用的注册中心中,使其成为该服务治理体系下的一个服务。所以现在我们应该要做的就是创建一个服务的消费者,服务的消费者主要完成两个工作,发现服务和消费服务。其中服务的发现是由Eureka的客户端来完成的,而服务的消费的任务则是交给Ribbon来完成。所谓的Ribbon其实就是一个客户端的负载均衡器,他可以通过配置服务实例列表去轮询访问以达到负载均衡的作用。Ribbon在后面会详细学习,这里只是用一下。

1、搭建一个Ribbon的spring boot项目,取名为ribbon-consumer,用于实现消费者
这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

2、增加配置
在启动类RibbonConsumerApplication中加上@EnableDiscoveryClient注解,让该应用注册为注册中心Eureka的客户端,以获得服务的发现能力。于此同时为其创建RestTemplate的Spring Bean实例,并通过@LoadBalanced注解为其开启客户端的负载均衡。
这里写图片描述

@SpringBootApplication@EnableDiscoveryClientpublic class RibbonConsumerApplication {    public static void main(String[] args) {        SpringApplication.run(RibbonConsumerApplication.class, args);    }    @Bean    @LoadBalanced    RestTemplate restTemplate(){        return new RestTemplate();    }}

修改application.properties配置文件,增加以下参数
这里写图片描述

spring.application.name=ribbon-consumerserver.port=9000eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka

这里消费者指向的注册中心为单点的,地址为http://localhost:1111/eureka
3、创建controller
这里写图片描述

@RestControllerpublic class ConsumerController {    @Autowired    RestTemplate restTemplate;    @RequestMapping(value="/ribbon-consumer",method = RequestMethod.GET)    public String helloConsumer(){       return restTemplate.getForEntity("http://eureka-service/hello",String.class).getBody();    }}

4、启动项目测试结果
启动注册中心,localhost:1111/eureka
通过命令行启动两个服务提供者的实例,端口号分别为8001和8002
步骤和上一篇启动两个注册中心的步骤相同,相关的启动命令如下

java -jar eureka-service-0.0.1-SNAPSHOT.jar --server.port=8001java -jar eureka-service-0.0.1-SNAPSHOT.jar --server.port=8002

注意 上述步骤是有顺序的,先启动注册中心,再启动两个服务提供者的实例,最后再启动消费者。

上述步骤执行完成后,打开浏览器访问http://localhost:1111可以看到
这里写图片描述
这时候打开浏览器访问http://localhost:9000/ribbon-consumer会发现成功的返回了“hello world”
这里写图片描述

问题:为什么在消费者的ConsumerController中,红色方框中写的是服务名而不是url?
这里写图片描述

阅读全文
0 0
原创粉丝点击