1. 程式人生 > 其它 >spring-cloud之服務治理元件Eureka

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:8999eureka服務地址),即可看到我們的服務註冊情況:

中間就是我們註冊的服務,這裡的服務名就是我們在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 bootspring cloud的區別,就算勉強能說上了一兩點,心裡總是不確定,因為對spring cloud確實瞭解的不夠,這一次我的目標就是破解spring cloud認知壁壘,構建spring cloud的知識體系,健全微服務知識體系。

今天算是一個簡單的入門簡介,後面我們持續分享。好了,今天就先到這裡吧!