spring boot 服務的註冊發現與呼叫

2021-10-23 06:47:47 字數 3329 閱讀 2623

感謝博主

1、構建eureka服務

眾所周知,在微服務裡面,業務系統之間有複雜的呼叫關係,他們之間需要有乙個註冊中心來管理。也就是服務發現**,它應該能起到如下作用:

普通服務能使用服務發現**進行註冊。

服務客戶端能通過服務發現**查詢所需的服務資訊。

多個服務發現**間能共享服務的註冊資訊。

服務發現**能檢測服務的健康資訊。

在spring cloud中,有多個元件可以起到服務發現**的作用,但一般比較常用、較專業、可用性較高的是eureka,eureka分為server和client,server是註冊中心,client是註冊/呼叫方,接下來我們構建eureka server來啟動乙個服務發現**。

1.1 idea建立eureka專案

新建專案,選擇spring boot專案。

選擇eureka server。

如圖所示,idea會自動幫你建立eureka專案並生成pom檔案,如果不想用自動生成的話,可以手動設定pom檔案,引入如下包。

org.springframework.cloud

spring-cloud-starter-netflix-eureka-server

1.2 新增配置檔案
server:

port: 8761 #eureka服務監聽埠

eureka:

client:

registerwitheureka: false #不要使用eureka服務註冊

fetchregistry: false #不要在本地快取登錄檔資訊

#server:

# waittimeinmswhensyncempty: 5 #在伺服器接收請求之前等待的初始時間

registerwitheureka屬性的含義是通過eureka服務來註冊自身,這裡設定為false時因為它本身就是eureka服務,不需要進行註冊。fetchregistry是在客戶端本地快取登錄檔資訊。waittimeinmswhensyncempty屬性比較重要。eureka會等待5min才會通告任何通過它註冊的服務,所以本地執行可以注釋此行,以加快速度。

每次服務註冊時,需要等待30s,才會成功顯示在eureka服務中,因為eureka需要從服務接收3次連續的心跳包ping,才能確認此服務是健康的。

1.3 通過註解啟動

最後一步是在啟動類中新增@enableeurekaserver註解,就可以讓此應用程式成為乙個eureka服務。

@enableeurekaserver

public static void main(string args) }

啟動後,訪問http://localhost:8761/便可看到eureka介面。

2.1 建立spring web、eureka client應用

通過idea建立專案

選擇spring web和eureka discovery,idea會自動建立該型別的專案。

2. 通過pom建立

org.springframework.cloud

spring-cloud-starter-netflix-eureka-client

```
2.2 建立配置檔案
spring:

name: mailservice #在eureka中註冊的服務名稱,將在服務查詢時使用

server:

port: 8080

eureka:

instance:

prefer-ip-address: true #註冊服務的ip

client:

register-with-eureka: true #使用eureka註冊服務

fetch-registry: true #在本地快取登錄檔

service-url:

defaultzone: http://localhost:8761/eureka #eureka服務位置

eureka.instance.prefer-ip-address的值設定為true,是將本服務的ip註冊到eureka,而不是網域名稱,一般建議使用ip,因為在使用容器部署時,容器本身不具有dns記錄,服務就沒辦法正確解析位址。基於雲的微服務本身是短暫和無狀態的,所以使用ip位址更適合。

service-url屬性的值是乙個map,因為單個eureka並不能保證高可用,所以一般會為客戶端提供乙個eureka服務列表,在單個eureka服務宕機時選擇另外的進行使用。

通過註解 @enablediscoveryclient 進行服務註冊

@enablediscoveryclient

public static void main(string args)

}

2.3 啟動服務為了實現這個目的,我們需要引入客戶端庫。能夠實現服務查詢和呼叫功能的在spring cloud中有三個客戶端,分別為:

spring discoveryclient.

resttemplate

netflix feign。

下面我們使用feign來實現服務呼叫。

3.1 建立feign專案

和上面建立的mailservice相比,多了乙個feign依賴。

org.springframework.cloud

spring-cloud-starter-netflix-eureka-client

org.springframework.cloud

spring-cloud-starter-openfeign

SpringBoot使用Consul註冊服務

springboot版本 2.0.3.release 1.8 finchley.sr1 org.springframework.boot spring boot starter actuator org.springframework.cloud spring cloud starter consu...

SpringBoot中註冊Servlet三大元件

springboot中缺省內置了servlet容器,tomcat。springboot預設是以jar包的方式啟動內建的servlet容器,沒有web.xml檔案。所以只能通過自定義servlet配置。使用servletregistrationbean filterregistrationbean s...

springBoot整合註冊中心eureka

一 註冊中心 1 新建service服務,匯入jar包 spring cloud starter eureka server 已經被遺棄,現使用spring cloud starter netflix eureka server org.springframework.cloud spring cl...