springcloud之高可用eureka集羣搭建

至於eureka,這裏就不做詳細介紹了,有興趣的可以去參閱下spring官網或某度上找找相關資料。今天我們這裏主要說下eureka高可用集羣式如何搭建的。

eureka是Netflix的子模塊之一,也是一個核心的模塊,eureka裏有2個組件,一個是EurekaServer(一個獨立的項目) 這個是用於定位服務以實現中間層服務器的負載平衡和故障轉移,另一個便是EurekaClient(我們的微服務) 它是用於與Server交互的,可以使得交互變得非常簡單:只需要通過服務標識符即可拿到服務。

話不多說,直接上代碼。首先先搭建環境,工程代碼如下(備註:以下所有代碼均是基於spring-cloud:Finchley.SR2 版本,spring-boot:2.1.2.RELEASE版本):
在這裏插入圖片描述
根據工程名稱,三個eureka-server便是需要集羣搭建的eureka服務了,兩個order-server和user-server作爲鏈接測試用。
在說eureka集羣搭建前,還是先來說說eureka常見相關配置參數。

當然搭建eureka集羣之前首先當然還是需要引入eureka相關依賴了。
eureka客戶端依賴:

<dependency>
	<groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

eureka服務端依賴:

  <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>

服務端yml配置入下(基本配置,不再多說,不明白的好去好好看看官網了,相關重要配置見如下注釋):
在這裏插入圖片描述
當然對於我們的啓動類,需要加上eureka的啓動開關了,@EnableEurekaServer註解
在這裏插入圖片描述
然今訪問localhost:8001,即可看見eureka服務監控頁面,說明或者單機的eureka服務已經啓動完成了。下面可嘗試添加下服務。
在這裏插入圖片描述
在這裏插入圖片描述
客戶端 配置如下:配置好對應的eureka服務端url即可。
在這裏插入圖片描述
我們來去註冊一個user的服務,當然對於客戶端服務,我們需要在啓動類上增加@EnableEurekaClient註解
在這裏插入圖片描述
啓動一下,看到如下效果說明服務已經註冊成功了。
在這裏插入圖片描述

好,單機版的eureka已經註冊完了,下面進入正題,我們來搭建高可用eureka集羣。

集羣原理是服務啓動後向Eureka註冊,Eureka Server會將註冊信息向其他Eureka Server進行同步,當服務消費者要調用服務提供者,則向服務註冊中心獲取服務提供者地址,然後會將服務提供者地址緩存在本地,下次再調用時,則直接從本地緩存中取,完成一次調用。

搭建模型如下圖(依次相互註冊即可):
在這裏插入圖片描述
爲了便於展示,我們先配置幾個本地域名,改下host文件即可:如下
在這裏插入圖片描述

下面我們便來配置eureka服務,配置文件很明顯,相互配置即可,自己配別人的,三個服務的詳細配置如下:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
同時設置不註冊自己
至於爲什麼不註冊自己了呢?,回到最上面我們說過,eureka的server會把自己的註冊信息與其他的server同步,所以這裏我們不需要註冊到自己身上,因爲另外兩臺服務器會配置本臺服務器。(這裏可能有點繞,可以參考一下剛剛那張集羣環境的圖,或者自己動手配置一下,另外兩臺eureka的配置與這個是差不多的,就不發出來了,只要注意是註冊到其他的服務上面就好了)

registerWithEureka: true #不把自己作爲一個客戶端註冊到自己身上
fetchRegistry: true #不需要從服務端獲取註冊信息(因爲在這裏自己就是服務端,而且已經禁用自己註冊了)

好了,下面我們來啓動下我們的集羣:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
看到如上信息,便說明我們的eureka集羣已經搭建好了,那麼我們現在向eureka集羣註冊一下我們的user服務,當然現在註冊方式寫法也要變一下了,就是 原來是註冊到那一個地址上面,現在是要寫三個eureka註冊地址,但是不是代表他會註冊三次,因爲我們eureka server的註冊信息是同步的,這裏只需要註冊一次就可以了,但是爲什麼要寫三個地址呢。因爲這樣就可以做到高可用的配置:打個比方有3臺服務器。但是突然宕機了一臺, 但是其他2臺還健在,依然可以註冊我們的服務,換句話來講, 只要有一臺服務還建在,那麼就可以註冊服務,具體如下:
在這裏插入圖片描述
在這裏插入圖片描述
可以看到我們的user服務已經註冊上去了,下面來驗證下集羣的可用性。
在這裏插入圖片描述
如上圖,我們先停掉8003,模擬下服務宕機,發現我們的user服務還是可以正常訪問的。
在這裏插入圖片描述
當然後面我停掉另外兩個的一個,服務也還是可以繼續訪問的,有興趣的可以自己做下實驗

至此,我們的一個簡單的高可用eureka集羣就搭建好了,當然生產上真正使用的時候就沒這麼簡單的了, 這隻能說給大家一個基礎的思路和認知,幫我們後面更好的去深入瞭解我們的spring-cloud體系。

今天就到這了,有問題請指正。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章