感謝博主
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.下面我們使用feign來實現服務呼叫。resttemplate
netflix 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...