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

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

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

这里写图片描述

这里写图片描述

这里写图片描述

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

@SpringBootApplication
@EnableDiscoveryClient
public 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-consumer
server.port=9000

eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka

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

@RestController
public 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=8001
java -jar eureka-service-0.0.1-SNAPSHOT.jar --server.port=8002

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

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

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值