spring-cloud之服務治理元件Eureka
前言
前幾天我們分享了webflux
的相關知識點,由於越分享發現內容越多,所以webflux
的相關知識就先告一段落,但是就目前分享的內容來說,已經足夠讓我們對webflux
有一個最近基本的認識,至於其他內容,我們後期繼續分享。
昨天天太熱了,不在狀態,也脈動不回來,所以也就沒有分享新的東西。
今天也熱,感覺像進了烤箱一樣,但是學習還是不能太懈怠,該堅持的不應該被放棄,而且這燥熱的天氣必須得有點產出,這樣我才稍微覺得生活的有點追求,人也稍微有點精神,所以思前想後,我就決定分享下spring cloud
的相關知識了。
spring cloud
算是現階段比較主流的技術,也是很多公司現階段面試的必問內容了,早一點做知識儲備,這樣後面再找工作也不會太過焦慮。
學習這件事,就應該,苟日新,日日新,又日新,當然也有做好就有知識的學習。好了,話不多說,下面我們直接開始吧。
Eureka
我們今天內容的主角就是spring cloud
的服務註冊治理元件——Eureka
,它中文的意思是找到了,發現了,它的作用和它的名稱大致相同,所以他在我們spring cloud
中所起的作用就是服務註冊和服務發現,我們今天主要分享的是spring cloud Eureka
元件的配置和簡單用法,至於服務之間的呼叫,我們放在後面講解。
建立專案
首先我們建立一個spring-boot-web
專案,核心依賴就是spring-boot-starter
:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency>
然後還需要引入spring-cloud-eureka
的依賴:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
<version>2.2.9.RELEASE</version>
</dependency>
這裡的版本可以在mvn
的倉庫查詢,地址如下:
https://mvnrepository.com/search?q=spring-cloud-starter-netflix-eureka-server
eureka配置
服務端配置
首先在專案主類上加上@EnableEurekaServer
註解,啟用Eureka
服務端:
@SpringBootApplication
@EnableEurekaServer
public class SpringCloudEurekaDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringCloudEurekaDemoApplication.class, args);
}
}
然後在application.properties
檔案中加入如下配置:
# Eureka 註冊伺服器主機名稱
eureka.instance.hostname=localhost
# 是否註冊給服務中心
eureka.client.register-with-eureka=false
# 是否檢索服務
eureka.client.fetch-registry=false
# 治理客戶端服務域
eureka.client.service-url.defaultZone=http://localhost:8999/eureka/
第一個配置是設定Eureka
的伺服器名稱,目前沒發現有啥用;
第二個配置項是設定是否註冊到服務中心,這個配置預設是true
,也就是說預設情況下會自動註冊至Eureka
,但是由於當前服務是註冊中心,所以就沒必要再註冊了。
第三個配置項是和第二個配置相對,它是設定是否從服務註冊中心獲取服務(發現服務),預設情況也是true
,由於本服務為服務中心,所以也不需要獲取。
第四個配置設定的是註冊中心的服務地址,客戶端也需要用到這個。不過,eureka
服務其實是不需要要這個地址的,當然配置或者不配置,服務註冊中心都可以啟動。
但是如果伺服器配置了defaultZone
(不論配置什麼地址),那麼客戶端的defaultZone
配置必須指定這個地址,而且服務的地址必須是
eureka服務地址:服務埠/eureka
否則,客戶端的啟動會報錯:
根據錯誤來看,應該是服務發現的時候報錯了。
客戶端配置
下面我們看下eureka
客戶端的配置,首先我們建立一個spring boot
專案(這裡我就直接用我之前的專案了),然後引入eureka
客戶端依賴:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>2.2.9.RELEASE</version>
</dependency>
然後在application.properties
檔案中新增如下配置:
eureka.client.service-url.defaultZone=http://localhost:8999/eureka/
這裡設定的就是我們eureka
服務的defaultZone
地址,這個地址就是我們的服務註冊地址。
如果你的服務版本比較老,那你可能還需要在spring boot
服務入口類中新增@EnableDiscoveryClient
註解:
@SpringBootApplication
@EnableDiscoveryClient
public class DailyNoteApplication {
public static void main(String[] args) {
SpringApplication.run(DailyNoteApplication.class, args);
}
}
這個註解的作用是啟用服務發現,但是在比較新的版本下,這個配置是預設啟用的(我目前的版本是2.2.9
,是不需要加這個配置的)
測試
服務配置完成後,我們分別啟動Eureka
服務和我們測試用的spring boot
服務,為了便於觀察,建議多建立幾個服務,另外最好在服務中配置服務名稱,這樣在檢視服務的時候,也便於區分:
# 應用名稱
spring.application.name=spring-webflux-demo
啟動成功後,訪問http://localhost:8999
(eureka
服務地址),即可看到我們的服務註冊情況:
中間就是我們註冊的服務,這裡的服務名就是我們在properties
檔案中配置的名稱,狀態status
表示服務狀態,up
表示狀態正常。
我們可以看到DALIY-NOTE
服務我們註冊了兩個服務,所以在右側顯示了兩個服務節點,點選右側節點就可以看到服務健康資訊:
因為我們配置的原因,所以資料顯示是空的,但是你可以訪問http://laptop-u2emgb33:8081/actuator/
,這時候是有資料的:
這裡的健康其實和spring-cloud
沒關係,是spring boot
的監控元件,這一款我們後期專門分享吧。
如果訪問提示404
,表示你的專案缺少actuator
監控的依賴:
新增下面的依賴,然後重新啟動就好了。
<!-- actuator監控資訊完善 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
總結
以前對spring cloud
的認識不夠,總是分不清spring boot
和spring cloud
的區別,就算勉強能說上了一兩點,心裡總是不確定,因為對spring cloud
確實瞭解的不夠,這一次我的目標就是破解spring cloud
認知壁壘,構建spring cloud
的知識體系,健全微服務知識體系。
今天算是一個簡單的入門簡介,後面我們持續分享。好了,今天就先到這裡吧!