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

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

1、搭建一个Ribbon的spring boot项目,取名为ribbon-consumer,用于实现消费者
《spring cloud微服务实战》读书笔记——Spring Cloud Eureka(四)服务的发现和消费_第1张图片

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

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

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

2、增加配置
在启动类RibbonConsumerApplication中加上@EnableDiscoveryClient注解,让该应用注册为注册中心Eureka的客户端,以获得服务的发现能力。于此同时为其创建RestTemplate的Spring Bean实例,并通过@LoadBalanced注解为其开启客户端的负载均衡。
《spring cloud微服务实战》读书笔记——Spring Cloud Eureka(四)服务的发现和消费_第5张图片

@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 cloud微服务实战》读书笔记——Spring Cloud Eureka(四)服务的发现和消费_第6张图片

spring.application.name=ribbon-consumer
server.port=9000

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

这里消费者指向的注册中心为单点的,地址为http://localhost:1111/eureka
3、创建controller
《spring cloud微服务实战》读书笔记——Spring Cloud Eureka(四)服务的发现和消费_第7张图片

@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可以看到
《spring cloud微服务实战》读书笔记——Spring Cloud Eureka(四)服务的发现和消费_第8张图片
这时候打开浏览器访问http://localhost:9000/ribbon-consumer会发现成功的返回了“hello world”
《spring cloud微服务实战》读书笔记——Spring Cloud Eureka(四)服务的发现和消费_第9张图片

问题:为什么在消费者的ConsumerController中,红色方框中写的是服务名而不是url?
《spring cloud微服务实战》读书笔记——Spring Cloud Eureka(四)服务的发现和消费_第10张图片

你可能感兴趣的:(spring-cloud)