接下來,我們一塊進入springcloud系列的學習中,關于springcloud微服務的理論知識這裡不在描述。
eureka-server服務搭建
服務提供者搭建,服務注冊
注冊中心高可用
在idea中建立新的工程 工程名 例: eureka-server
關于springcloud與springboot版本請參考另一篇部落格
在resources資源檔案下建立 application.yml,并在該application.yml檔案中加入如下配置
在啟動類加入如下代碼
啟動類啟動服務 看到包含如下日志輸出代表成功
我們根據配置的服務端口号在浏覽器裡通路一下服務,我這裡配置的端口号是8761
至此,我們已經把eureka服務起來了,從圖中下方紅框我們可以發現,目前還沒有可用的服務,接下來,我們再建立一個服務注冊到eureka
在idea中建立新的工程 工程名 例: provide-server1
啟動類啟動服務 看到包含如下日志輸出代表配置成功
去檢視注冊中心看服務有沒有注冊成功

從圖中可以看到 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工程,把配置檔案複制三份,而且隻要這三個配置檔案,分别為
然後 複制三份啟動類啟動入口
然後在每一份中選擇使用的配置檔案
将三份配置檔案内容做出更改如下
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
完成了互相注冊
啟動三個服務
因為啟動順序的不一樣會導緻已經起來的服務注冊到未啟動的服務,會抛出異常,這是正常現象,稍等半分鐘左右打開浏覽器通路 http://127.0.0.1:8761/
此時可以試着通路另外的兩個服務,可以發現也是類似的,這時就已經搭建成功了
那麼,我們的向注冊中心注冊的服務也要修改
這裡還使用第2步建立的provide-server工程,修改注冊中心位址為如下
啟動provide-server
檢視任意一個注冊中心
此時,檢視另外兩個注冊中心,發現也注冊成功了,那就說明我們已經完成了eureka的高可用搭建