Spring Cloud构建微服务架构:服务消费(基础)

使用LoadBalancerClient

在Spring Cloud Commons中提供了大量的与服务治理相关的抽象接口,包括DiscoveryClient、这里我们即将介绍的LoadBalancerClient等。对于这些接口的定义我们在上一篇介绍服务注册与发现时已经说过,Spring Cloud做这一层抽象,很好的解耦了服务治理体系,使得我们可以轻易的替换不同的服务治理设施。

LoadBalancerClient接口的命名中,我们就知道这是一个负载均衡客户端的抽象定义,下面我们就看看如何使用Spring Cloud提供的负载均衡器客户端接口来实现服务的消费。

下面的例子,我们将利用上一篇中构建的eureka-server作为服务注册中心、eureka-client作为服务提供者作为基础。

  • 我们先来创建一个服务消费者工程,命名为:eureka-consumer。并在pom.xml中引入依赖(这里省略了parent和dependencyManagement的配置):
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
复制代码

配置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);
}
}
复制代码

可以看到这里,我们注入了LoadBalancerClientRestTemplate,并在/consumer接口的实现中,先通过loadBalancerClientchoose函数来负载均衡的选出一个eureka-client的服务实例,这个服务实例的基本信息存储在ServiceInstance中,然后通过这些对象中的信息拼接出访问/dc接口的详细地址,最后再利用RestTemplate对象实现对服务提供者接口的调用。

在完成了上面你的代码编写之后,读者可以将eureka-server、eureka-client、eureka-consumer都启动起来,来跟踪观察eureka-consumer服务是如何消费eureka-client服务的/dc接口的。

从现在开始,我这边会将近期研发的springcloud微服务云架构的搭建过程和精髓记录下来,帮助更多有兴趣研发spring cloud框架的朋友,希望可以帮助更多的好学者。大家来一起探讨spring cloud架构的搭建过程及如何运用于企业项目。


转载于:https://juejin.im/post/5b5990fdf265da0f8816149e

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/282660.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle数据库中VARCHAR2(50 CHAR) 和VARCHAR2(50) 有啥区别?

VARCHAR2&#xff08;50 char&#xff09;这种类型的字段最多放50个字符&#xff0c;不够50个用空格填充&#xff1b;而VARCHAR2(50)最大允许存放50个字符&#xff0c;但是不足50个也不用空格填充。varchar2是变长字符串&#xff0c;与CHAR类型不同&#xff0c;它不会使用空格填…

《解密小米之互联网下的商业奇迹》

解密小米《解密小米之互联网下的商业奇迹》 磐石之心 清华大学出版社 2014/10/1 书籍&#xff1a;《非同凡响想,乔布斯启示录》 磐石之心&#xff1a;原名王斌&#xff0c;互联网IT资深预言家&#xff0c;第一个提出互联网未来竞争是在线生活方式的竞争&#xff1b;第一个提出3…

计算机内存的故障,计算机内存出现故障的解决方法

内存如果出现故障&#xff0c;会造成系统运行不稳定、程序异常出错和*作系统无法安装的故障&#xff0c;下面将列举内存常见的故障排除实例。1)内存顺序引起的计算机工作不正常故障现象&#xff1a;一台p4计算机&#xff0c;使用的是华硕intel850芯片组的主板&#xff0c;两条r…

2018暑假集训---递推递归----一只小蜜蜂hdu2044

一只小蜜蜂... Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 93249 Accepted Submission(s): 33187Problem Description 有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房&#xff0c;不能反向爬行。请编程计算蜜…

《ASP.NET Core 6框架揭秘》实例演示[28]:自定义一个服务器

作为ASP.NET Core请求处理管道的“龙头”的服务器负责监听和接收请求并最终完成对请求的响应。它将原始的请求上下文描述为相应的特性&#xff08;Feature&#xff09;&#xff0c;并以此将HttpContext上下文创建出来&#xff0c;中间件针对HttpContext上下文的所有操作将借助于…

高清摄像头MIPI接口与ARM连接【转】

本文转载自&#xff1a;http://www.cnblogs.com/whw19818/p/5811299.html MIPI摄像头常见于手机、平板中&#xff0c;支持500万像素以上高清分辨率。它的全称为“Mobile Industry Processor Interface”&#xff0c;分为MIPI DSI 和MIPI CSI&#xff0c;分别对应于视频显示和视…

算法(第4版)Robert Sedgewick 刷题 第一章(1)

/*** Description 颠倒数组排列顺序* author SEELE* date 2017年8月17日 上午10:56:17* action sortArr*/public static void sortArr() {int[] b new int[6];int[] a { 1, 2, 3, 4, 5, 6, 7 };for (int i 0; i < a.length / 2; i) {int temp a[a.length - 1 - i];a[a.l…

9种排序算法在四种数据分布下的速度比较

9种算法分别是&#xff1a; 1.选择排序 2.希尔排序 3.插入排序 4.归并排序 5.快速排序 6.堆排序 7.冒泡排序 8.梳排序 9.鸡尾酒排序 在不同的情形下&#xff0c;排序速度前三名也不尽相同 Random : 希尔>快排>归并 Few unique : 快排>…

win7服务器端口被占用,高手亲自帮您win7端口被占用的详尽处理要领

今天有一位用户说他安装了win7系统以后&#xff0c;在使用中突然遇到了win7端口被占用的情况&#xff0c;估计还会有更多的网友以后也会遇到win7端口被占用的问题&#xff0c;所以今天我们先来分析分析&#xff0c;那我们要怎么面对这个win7端口被占用的问题呢&#xff1f;大家…

局部变量和参数传递的问题

<SCRIPT LANGUAGE"JavaScript">var bb 1;function aa(bb) { //这里传递参数相当于 var bb bb ;给形参bb赋值为1。&#xff08;又参数传递&#xff0c;相当于就是在函数中定义了一个局部变量并且给这个变量赋了初值1&#xff09;此bb非彼bb&#xff0c;是分别…

回车ajax显示,ajax返回值中有回车换行、空格的解决方法分享

最近在写一个页面&#xff0c;用jquery ajax来实现判断&#xff0c;刚写好测试完全没有问题&#xff0c;过了两天发现出现问题&#xff0c;判断不成了。后来发现所有alert出来的返回值前面都会加若干换行和空格。(至今不明白&#xff0c;同一台电脑&#xff0c;同样的环境&…

PHP插入排序

本意是想研究一下希尔排序的,因为希尔排序和快速排序没有争议的是排序最快的两种算法,但无奈希尔排序是以插入排序为基础的,所以只得先研究一下插入排序. 插入排序基本思想: 插入排序(Insertion Sort)的基本思想是&#xff1a;每次将一个待排序的记录&#xff0c;按其关键字大小…

使用Stepping.NET轻松执行多步原子操作

Stepping 是一个基于 BASE 的分布式作业实现。它可以作为工作流引擎&#xff0c;事件收/发件箱&#xff0c;用于邮箱/短信发送&#xff0c;用于远程接口调用等场景。Stepping 中 Job 和 Step 是什么?Job 是一个分布式事务单元&#xff0c;而 Step 是 job 中一个特定的任务。一…

JSP+JavaBean+Servlet技术(MVC模型)

一&#xff0c;Servlet开发用户在浏览器中输入一个网址并回车&#xff0c;浏览器会向服务器发送一个HTTP请求。服务器端程序接受这个请求&#xff0c;并对请求进行处理&#xff0c;然后发送一个回应。浏览器收到回应&#xff0c;再把回应的内容显示出来。这种请求—响应模式就是…

ora-01591:锁被未分布式事物处理/Distrib tran

伴随报错内容&#xff1a;Distrib tran xxx.xxx.xx.x.xxxx 1、使用Oracle DBA用户&#xff0c;查询如下数据字典&#xff1a;select * from dba_2pc_pending2、强制Rollback或者Commit该事务&#xff1a;select commit force || local_tran_id||; from dba_2pc_pending…

bzoj2721 [Violet 5]樱花

分析&#xff1a;这道题对于我这种蒟蒻来说还是很有难度啊。 思路非常巧妙&#xff0c;既然不定方程要有有限个数解&#xff0c;那么这个肯定会对解有所限制&#xff0c;也就是本题中的正整数.这个时候我们要表示出方程中的一个根x,设z n!,那么xyz/(y-z),这样的话不能得到答案…

ipados 文件 连接服务器,iPadOS更新指南,总有一个功能是你需要的

近期&#xff0c;苹果向部分ipad用户推送了iPadOS系统&#xff0c;据系统介绍&#xff0c;这是一款强大的操作系统&#xff0c;更能体现iPad的独特之处。iPadOS与IOS同源&#xff0c;针对iPad的大显示屏和多功能增加了全新和直观的强大功能。刚才小编给大家提到了部分iPad用户&…

Angular 2.x 从0到1 (五)史上最简单的Angular2教程

第一节&#xff1a;Angular 2.0 从0到1 &#xff08;一&#xff09;第二节&#xff1a;Angular 2.0 从0到1 &#xff08;二&#xff09;第三节&#xff1a;Angular 2.0 从0到1 &#xff08;三&#xff09;第四节&#xff1a;Angular 2.0 从0到1 &#xff08;四&#xff09;第五…

《大道至简》读后感

所谓的大道至简就是说大道理&#xff08;基本原理&#xff0c;方法和规律&#xff09;是极其简单的&#xff0c;简单到一两句话就能说明白。所谓“真传一句话&#xff0c;假传万卷书”。这也许也是这本书只有一百多页的原因吧。 说实话&#xff0c;《大道至简》这部作品对现在有…

ajax 分页 评论刷新,评论:js无刷新分页(原创)

繁华落尽02020/4/28 0:26:00大佬&#xff0c;教一下怎么用&#xff0c;以前我是直接在按钮上绑个路径。首页上一页${i}${i}下一页尾页漫走32020/4/28 20:43:32后台的方法需要的参数&#xff1a;当前页、每页显示条数&#xff0c;插件都给你控制好了&#xff0c;你直接用就行。e…