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.pswp.cn/news/282660.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/282660.shtml
英文地址,請注明出處:http://en.pswp.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…