Spring Cloud 三 服務提供與呼叫

2021-09-08 13:46:21 字數 3782 閱讀 8952

我們假設服務提供者有乙個hello方法,可以根據傳入的引數,提供輸出「hello ***,this is first messge」的服務

建立乙個springboot專案,pom.xml中新增如下配置:

啟動類中新增@enablediscoveryclient註解

@enablediscoveryclient

public

class

public

static

void

main(string args) }

提供hello服務

@restcontroller

public

class

hellocontroller

}

新增@enablediscoveryclient註解後,專案就具有了服務註冊的功能。啟動工程後,就可以在註冊中心的頁面看到spring-cloud-producer服務。

到此服務提供者配置就完成了。

和服務提供者一致

啟動類新增@enablediscoveryclient@enablefeignclients註解。

@enablediscoveryclient

@enablefeignclients

public

class

public

static

void

main(string args) }

feign是乙個宣告式web service客戶端。使用feign能讓編寫web service客戶端更加簡單, 它的使用方法是定義乙個介面,然後在上面新增註解,同時也支援jax-rs標準的註解。feign也支援可拔插式的編碼器和解碼器。spring cloud對feign進行了封裝,使其支援了spring mvc標準註解和httpmessageconverters。feign可以與eureka和ribbon組合使用以支援負載均衡。

@feignclient(name= "spring-cloud-producer")

public

inte***ce

helloremote

此類中的方法和遠端服務中contoller中的方法名和引數需保持一致。

將helloremote注入到controller層,像普通方法一樣去呼叫即可。

@restcontroller

public

class

consumercontroller

}

到此,最簡單的乙個服務註冊與呼叫的例子就完成了。

依次啟動spring-cloud-eureka、spring-cloud-producer、spring-cloud-consumer三個專案

先輸入:http://localhost:9000/hello?name=neo檢查spring-cloud-producer服務是否正常

返回:hello neo,this is first messge

說明spring-cloud-producer正常啟動,提供的服務也正常。

瀏覽器中輸入:http://localhost:9001/hello/neo

返回:hello neo,this is first messge

說明客戶端已經成功的通過feign呼叫了遠端服務hello,並且將結果返回到了瀏覽器。

以上面spring-cloud-producer為例子修改,將其中的controller改動如下:

@restcontroller

public

class

hellocontroller

}

在配置檔案中改動埠:

打包啟動後,在eureka就會發現兩個服務提供者,如下圖:

然後在瀏覽器再次輸入:http://localhost:9001/hello/neo進行測試:

第一次返回結果:hello neo,this is first messge

第二次返回結果:hello neo,this is producer 2 send first messge

不斷的進行測試下去會發現兩種結果交替出現,說明兩個服務中心自動提供了服務均衡負載的功能。如果我們將服務提供者的數量在提高為n個,測試結果一樣,請求會自動輪詢到每個服務端來處理。

springcloud(三)服務治理之服務提供者

分布式系統架構中的所有微服務都需要在註冊中心完成註冊才能被發現進而使用,所謂的服務提供者和服務消費者是從業務角度來劃分的,實際上服務提供者和服務消費者都是通過 eureka client 連線到 eureka server 完成註冊。通過 spring boot 搭建乙個微服務應用,再通過 eure...

Spring Cloud 消費服務(三)

建立應用主類。初始化resttemplate,用來真正發起rest請求。enablediscoveryclient註解用來將當前應用加入到服務治理體系中。enablediscoveryclient public class bean public resttemplate resttemplate ...

SpringCloud 三 服務呼叫

總結 示例 pandas 是基於numpy 的一種工具,該工具是為了解決資料分析任務而建立的。如下 示例 import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns impo...