摘要:下面的例子,我们将利用上一篇中构建的作为服务注册中心作为服务提供者作为基础。我们先来创建一个服务消费者工程,命名为。初始化,用来真正发起请求。注解用来将当前应用加入到服务治理体系中。
使用LoadBalancerClient通过上一篇《Spring Cloud构建微服务架构:服务注册与发现》,我们已经成功地将服务提供者:eureka-client或consul-client注册到了Eureka服务注册中心或Consul服务端上了,同时我们也通过DiscoveryClient接口的getServices获取了当前客户端缓存的所有服务清单,那么接下来我们要学习的就是:如何去消费服务提供者的接口?
在Spring Cloud Commons中提供了大量的与服务治理相关的抽象接口,包括DiscoveryClient、这里我们即将介绍的LoadBalancerClient等。对于这些接口的定义我们在上一篇介绍服务注册与发现时已经说过,Spring Cloud做这一层抽象,很好的解耦了服务治理体系,使得我们可以轻易的替换不同的服务治理设施。
从LoadBalancerClient接口的命名中,我们就知道这是一个负载均衡客户端的抽象定义,下面我们就看看如何使用Spring Cloud提供的负载均衡器客户端接口来实现服务的消费。
下面的例子,我们将利用上一篇中构建的eureka-server作为服务注册中心、eureka-client作为服务提供者作为基础。
我们先来创建一个服务消费者工程,命名为:eureka-consumer。并在pom.xml中引入依赖(这里省略了parent和dependencyManagement的配置):
org.springframework.cloud spring-cloud-starter-eureka org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-actuator
配置application.properties,指定eureka注册中心的地址:
spring.application.name=eureka-consumer server.port=2101 eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/
创建应用主类。初始化RestTemplate,用来真正发起REST请求。@EnableDiscoveryClient注解用来将当前应用加入到服务治理体系中。
@EnableDiscoveryClient @SpringBootApplication public class Application { @Bean public RestTemplate restTemplate() { return new RestTemplate(); } public static void main(String[] args) { new SpringApplicationBuilder(Application.class).web(true).run(args); } }
创建一个接口用来消费eureka-client提供的接口:
@RestController public class DcController { @Autowired LoadBalancerClient loadBalancerClient; @Autowired RestTemplate restTemplate; @GetMapping("/consumer") public String dc() { ServiceInstance serviceInstance = loadBalancerClient.choose("eureka-client"); String url = "http://" + serviceInstance.getHost() + ":" + serviceInstance.getPort() + "/dc"; System.out.println(url); return restTemplate.getForObject(url, String.class); } }
可以看到这里,我们注入了LoadBalancerClient和RestTemplate,并在/consumer接口的实现中,先通过loadBalancerClient的choose函数来负载均衡的选出一个eureka-client的服务实例,这个服务实例的基本信息存储在ServiceInstance中,然后通过这些对象中的信息拼接出访问/dc接口的详细地址,最后再利用RestTemplate对象实现对服务提供者接口的调用。
在完成了上面你的代码编写之后,读者可以将eureka-server、eureka-client、eureka-consumer都启动起来,然后访问http://localhost:2101/consumer ,来跟踪观察eureka-consumer服务是如何消费eureka-client服务的/dc接口的。
consul版的示例,可查看git仓库中的consul-client和consul-consumer
更多Spring Cloud内容请持续关注我的博客更新或在《Spring Cloud微服务实战》中获取。
代码示例样例工程将沿用之前在码云和GitHub上创建的SpringCloud-Learning项目,重新做了一下整理。通过不同目录来区分Brixton和Dalston的示例。
码云:点击查看
GitHub:点击查看
具体工程说明如下:
eureka的服务注册中心:eureka-server
eureka的服务提供方:eureka-client
eureka的服务消费者:eureka-consumer
consul的服务提供方:consul-client
consul的服务消费者:consul-consumer
相关阅读eureka的高可用服务注册中心
eureka源码分析
基于consul的分布式锁
基于consul的分布式信号量
更多Spring Cloud内容...
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/67308.html
摘要:它通过使用来连接消息代理中间件以实现消息事件驱动的微服务应用。该示例主要目标是构建一个基于的微服务应用,这个微服务应用将通过使用消息中间件来接收消息并将消息打印到日志中。下面我们通过编写生产消息的单元测试用例来完善我们的入门内容。 之前在写Spring Boot基础教程的时候写过一篇《Spring Boot中使用RabbitMQ》。在该文中,我们通过简单的配置和注解就能实现向Rabbi...
摘要:微服务架构概述应用架构的发展应用是可独立运行的程序代码,提供相对完善的业务功能。阿里开源的是的典型实现。它目前由官方开发维护,基于开发,提供一套完整的微服务解决方案。 微服务与Spring Cloud 随着互联网的快速发展, 云计算近十年也得到蓬勃发展, 企业的IT环境和IT架构也逐渐在发生变革,从过去的单体应用架构发展为至今广泛流行的微服务架构。 微服务是一种架构风格, 能给软件应用...
摘要:属性对应服务注册中心的配置内容,指定服务注册中心的位置。项目是针对的服务治理实现。下面可以尝试让的服务提供者运行起来。我们可以用下面的命令启动的开发模式服务端启动完成之后,我们再将之前改造后的服务提供者启动起来。 已经有非常长的时间没有更新《Spring Cloud构建微服务架构》系列文章了,自从开始写Spring Cloud的专题内容开始就获得了不少的阅读量和认可,当然也有一些批评...
摘要:下一篇介绍基于的服务注册与调用。服务提供者工程配置这里服务提供者是使用之前进阶教程第三篇整合连接池以及监控改造而来,这里一样的部分就不再重复说明,下面将说明新增的部分。 Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分...
阅读 2709·2021-09-02 15:11
阅读 884·2019-08-26 18:18
阅读 1847·2019-08-26 11:57
阅读 3237·2019-08-23 16:59
阅读 1914·2019-08-23 16:51
阅读 2287·2019-08-23 16:11
阅读 3031·2019-08-23 14:58
阅读 1031·2019-08-23 11:34