天天看點

springcloud服務注冊與發現eureka【高可用】

接下來,我們一塊進入springcloud系列的學習中,關于springcloud微服務的理論知識這裡不在描述。

eureka-server服務搭建

服務提供者搭建,服務注冊

注冊中心高可用

在idea中建立新的工程 工程名 例: eureka-server

關于springcloud與springboot版本請參考另一篇部落格

在resources資源檔案下建立 application.yml,并在該application.yml檔案中加入如下配置

在啟動類加入如下代碼

啟動類啟動服務 看到包含如下日志輸出代表成功

我們根據配置的服務端口号在浏覽器裡通路一下服務,我這裡配置的端口号是8761

至此,我們已經把eureka服務起來了,從圖中下方紅框我們可以發現,目前還沒有可用的服務,接下來,我們再建立一個服務注冊到eureka

在idea中建立新的工程 工程名 例: provide-server1

啟動類啟動服務 看到包含如下日志輸出代表配置成功

去檢視注冊中心看服務有沒有注冊成功

springcloud服務注冊與發現eureka【高可用】

從圖中可以看到 provide-server1已經注冊成功,并且是 up的狀态

在圖的中部可以看到有行英文警告,我們把它翻譯一下

緊急!EUREKA可能錯誤地聲明執行個體已經啟動,而實際上它們并沒有。續訂低于門檻值,是以不會為了安全而終止執行個體。

這是因為Eureka進入了自我保護機制,預設情況下,如果EurekaServer在一定時間内沒有接收到某個微服務執行個體的心跳時,EurekaServer将會登出該執行個體(預設90s)。但是當網絡發生故障時,微服務與EurekaServer之間無法通信,這樣就會很危險了,因為微服務本身是很健康的,此時就不應該登出這個微服務,而Eureka通過自我保護機制來預防這種情況,當網絡健康後,該EurekaServer節點就會自動退出自我保護模式;

如果服務沒停止就不會出現這個提示

可以在 eureka-server 服務中的application.yml檔案中加入如下配置來解決

至此服務的注冊與發現已經搭建完畢

Eureka Server可通過運作多台執行個體并互相注冊的方式來實作高可用,各執行個體是平等的,沒有master和slave之分,不像zookeeper一樣有選舉機制。

eureka叢集高可用原理其實很簡單,簡單來說就是讓注冊中心服務互相注冊一下,接下來我們來試一下。我們隻是在本地環境模拟一下三台注冊中心

windows環境請修改hosts檔案

C:\Windows\System32\drivers\etc\hosts

增加如下内容

然後儲存

如果儲存的時候提示權限不足,請重新以下列方式打開hosts檔案

1、按 win鍵

2、輸入 記事本 (可能沒輸入框,直接按鍵盤打字就行了)

3、右鍵 選擇 以管理者身份打開

4、然後打開hosts檔案修改即可

使用教程1搭建的eureka-server工程,把配置檔案複制三份,而且隻要這三個配置檔案,分别為

然後 複制三份啟動類啟動入口

springcloud服務注冊與發現eureka【高可用】

然後在每一份中選擇使用的配置檔案

springcloud服務注冊與發現eureka【高可用】

将三份配置檔案内容做出更改如下

application-server1.yml

application-server2.yml

application-server3.yml

從上面的修改中我們可以看出

有服務 eureka-8761, eureka-8762, eureka-8763

eureka-8761 注冊到 eureka-8762, eureka-8763

eureka-8762 注冊到 eureka-8761, eureka-8763

eureka-8763 注冊到 eureka-8761, eureka-8762

完成了互相注冊

啟動三個服務

springcloud服務注冊與發現eureka【高可用】

因為啟動順序的不一樣會導緻已經起來的服務注冊到未啟動的服務,會抛出異常,這是正常現象,稍等半分鐘左右打開浏覽器通路 http://127.0.0.1:8761/

springcloud服務注冊與發現eureka【高可用】

此時可以試着通路另外的兩個服務,可以發現也是類似的,這時就已經搭建成功了

那麼,我們的向注冊中心注冊的服務也要修改

這裡還使用第2步建立的provide-server工程,修改注冊中心位址為如下

啟動provide-server

檢視任意一個注冊中心

springcloud服務注冊與發現eureka【高可用】

此時,檢視另外兩個注冊中心,發現也注冊成功了,那就說明我們已經完成了eureka的高可用搭建

繼續閱讀