自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Spring Cloud構(gòu)建微服務(wù)架構(gòu):服務(wù)消費(fèi)(基礎(chǔ))

企業(yè)動(dòng)態(tài)
在Spring Cloud Commons中提供了大量的與服務(wù)治理相關(guān)的抽象接口,包括DiscoveryClient、這里我們即將介紹的LoadBalancerClient等。對(duì)于這些接口的定義我們?cè)谏弦黄榻B服務(wù)注冊(cè)與發(fā)現(xiàn)時(shí)已經(jīng)說(shuō)過(guò),Spring Cloud做這一層抽象,很好的解耦了服務(wù)治理體系,使得我們可以輕易的替換不同的服務(wù)治理設(shè)施。

[[194926]]

通過(guò)上一篇《Spring Cloud構(gòu)建微服務(wù)架構(gòu):服務(wù)注冊(cè)與發(fā)現(xiàn)》,我們已經(jīng)成功地將服務(wù)提供者:eureka-client或consul-client注冊(cè)到了Eureka服務(wù)注冊(cè)中心或Consul服務(wù)端上了,同時(shí)我們也通過(guò)DiscoveryClient接口的getServices獲取了當(dāng)前客戶端緩存的所有服務(wù)清單,那么接下來(lái)我們要學(xué)習(xí)的就是:如何去消費(fèi)服務(wù)提供者的接口?

使用LoadBalancerClient

在Spring Cloud Commons中提供了大量的與服務(wù)治理相關(guān)的抽象接口,包括DiscoveryClient、這里我們即將介紹的LoadBalancerClient等。對(duì)于這些接口的定義我們?cè)谏弦黄榻B服務(wù)注冊(cè)與發(fā)現(xiàn)時(shí)已經(jīng)說(shuō)過(guò),Spring Cloud做這一層抽象,很好的解耦了服務(wù)治理體系,使得我們可以輕易的替換不同的服務(wù)治理設(shè)施。

從LoadBalancerClient接口的命名中,我們就知道這是一個(gè)負(fù)載均衡客戶端的抽象定義,下面我們就看看如何使用Spring Cloud提供的負(fù)載均衡器客戶端接口來(lái)實(shí)現(xiàn)服務(wù)的消費(fèi)。

下面的例子,我們將利用上一篇中構(gòu)建的eureka-server作為服務(wù)注冊(cè)中心、eureka-client作為服務(wù)提供者作為基礎(chǔ)。

  • 我們先來(lái)創(chuàng)建一個(gè)服務(wù)消費(fèi)者工程,命名為:eureka-consumer。并在pom.xml中引入依賴(這里省略了parent和dependencyManagement的配置):
  1. <dependencies> 
  2.     <dependency> 
  3.         <groupId>org.springframework.cloud</groupId> 
  4.         <artifactId>spring-cloud-starter-eureka</artifactId> 
  5.     </dependency> 
  6.     <dependency> 
  7.         <groupId>org.springframework.boot</groupId> 
  8.         <artifactId>spring-boot-starter-web</artifactId> 
  9.     </dependency> 
  10.     <dependency> 
  11.         <groupId>org.springframework.boot</groupId> 
  12.         <artifactId>spring-boot-starter-actuator</artifactId> 
  13.     </dependency> 
  14. </dependencies> 
  • 配置application.properties,指定eureka注冊(cè)中心的地址:
  1. spring.application.name=eureka-consumer 
  2. server.port=2101 
  3. eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/ 
  • 創(chuàng)建應(yīng)用主類。初始化RestTemplate,用來(lái)真正發(fā)起REST請(qǐng)求。@EnableDiscoveryClient注解用來(lái)將當(dāng)前應(yīng)用加入到服務(wù)治理體系中。
  1. @EnableDiscoveryClient 
  2. @SpringBootApplication 
  3. public class Application { 
  4.     @Bean 
  5.     public RestTemplate restTemplate() { 
  6.         return new RestTemplate(); 
  7.     } 
  8.     public static void main(String[] args) { 
  9.         new SpringApplicationBuilder(Application.class).web(true).run(args); 
  10.     } 
  • 創(chuàng)建一個(gè)接口用來(lái)消費(fèi)eureka-client提供的接口:
  1. @RestController 
  2. public class DcController { 
  3.     @Autowired 
  4.     LoadBalancerClient loadBalancerClient; 
  5.     @Autowired 
  6.     RestTemplate restTemplate; 
  7.     @GetMapping("/consumer"
  8.     public String dc() { 
  9.         ServiceInstance serviceInstance = loadBalancerClient.choose("eureka-client"); 
  10.         String url = "http://" + serviceInstance.getHost() + ":" + serviceInstance.getPort() + "/dc"
  11.         System.out.println(url); 
  12.         return restTemplate.getForObject(url, String.class); 
  13.     } 

可以看到這里,我們注入了LoadBalancerClient和RestTemplate,并在/consumer接口的實(shí)現(xiàn)中,先通過(guò)loadBalancerClient的choose函數(shù)來(lái)負(fù)載均衡的選出一個(gè)eureka-client的服務(wù)實(shí)例,這個(gè)服務(wù)實(shí)例的基本信息存儲(chǔ)在ServiceInstance中,然后通過(guò)這些對(duì)象中的信息拼接出訪問(wèn)/dc接口的詳細(xì)地址,***再利用RestTemplate對(duì)象實(shí)現(xiàn)對(duì)服務(wù)提供者接口的調(diào)用。

在完成了上面你的代碼編寫之后,讀者可以將eureka-server、eureka-client、eureka-consumer都啟動(dòng)起來(lái),然后訪問(wèn)http://localhost:2101/consumer ,來(lái)跟蹤觀察eureka-consumer服務(wù)是如何消費(fèi)eureka-client服務(wù)的/dc接口的。

consul版的示例,可查看git倉(cāng)庫(kù)中的consul-client和consul-consumer

代碼示例

樣例工程將沿用之前在碼云和GitHub上創(chuàng)建的SpringCloud-Learning項(xiàng)目,重新做了一下整理。通過(guò)不同目錄來(lái)區(qū)分Brixton和Dalston的示例。

碼云:點(diǎn)擊查看

GitHub:點(diǎn)擊查看

具體工程說(shuō)明如下:

  • eureka的服務(wù)注冊(cè)中心:eureka-server
  • eureka的服務(wù)提供方:eureka-client
  • eureka的服務(wù)消費(fèi)者:eureka-consumer
  • consul的服務(wù)提供方:consul-client
  • consul的服務(wù)消費(fèi)者:consul-consumer

【本文為51CTO專欄作者“翟永超”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)通過(guò)51CTO聯(lián)系作者獲取授權(quán)】

戳這里,看該作者更多好文

責(zé)任編輯:武曉燕 來(lái)源: 51CTO專欄
相關(guān)推薦

2017-08-09 15:50:47

Spring Clou微服務(wù)架構(gòu)

2017-08-10 11:15:05

Spring Clou微服務(wù)架構(gòu)

2017-09-04 16:15:44

服務(wù)網(wǎng)關(guān)架構(gòu)

2017-07-03 09:50:07

Spring Clou微服務(wù)架構(gòu)

2017-12-20 15:37:39

Spring Clou微服務(wù)架構(gòu)

2018-03-02 16:11:29

Spring Clou分布式服務(wù)跟蹤

2017-06-25 13:33:25

Spring Clou微服務(wù)架構(gòu)

2017-07-04 17:35:46

微服務(wù)架構(gòu)Spring Clou

2018-07-09 09:27:10

Spring Clou微服務(wù)架構(gòu)

2018-04-16 14:56:56

微服務(wù)架構(gòu)分布式服務(wù)

2018-04-18 16:07:49

Spring Clou微服務(wù)分布式

2017-09-09 23:15:20

Spring Clou微服務(wù)架構(gòu)路由

2018-03-13 16:42:26

分布式服務(wù)跟蹤

2018-04-02 15:01:31

微服務(wù)架構(gòu)分布式服務(wù)

2018-04-09 13:56:13

微服務(wù)架構(gòu)分布式

2017-09-15 23:29:53

Spring Clou微服務(wù)架構(gòu)過(guò)濾器

2017-07-28 16:41:53

Spring Clou微服務(wù)架構(gòu)

2018-05-23 15:58:27

Spring Clou微服務(wù)架構(gòu)

2018-07-19 14:58:14

Spring Clou微服務(wù)架構(gòu)

2017-09-05 14:05:11

微服務(wù)spring clou路由
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)