1. 程式人生 > >搭建服務註冊中心和註冊服務提供者過程中遇到問題

搭建服務註冊中心和註冊服務提供者過程中遇到問題

遇到問題:
1、
專案包建在入口主類所在包的裡面
這裡寫圖片描述
2、Whitelabel Error Page
@springBootApplication在進行載入時,只會載入其入口的當前目錄及其子目錄下的服務,如果存放在其它目錄下,應用掃描不到。如下正確方式
這裡寫圖片描述

3、
這裡寫圖片描述

springcloud服務已經關但是Eureka還是顯示up

該狀態持續很久,訪問該服務也返回錯誤,但在註冊中心介面,該服務卻一直存在,且為UP狀態,並且在大約十分鐘後,出現一行紅色大字:EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY’RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.
原因:自我保護機制。Eureka Server在執行期間,會統計心跳失敗的比例在15分鐘之內是否低於85%,如果出現低於的情況(在單機除錯的時候很容易滿足,實際在生產環境上通常是由於網路不穩定導致),Eureka Server會將當前的例項註冊資訊保護起來,同時提示這個警告。

我是在本地除錯的:
這是由於本地除錯很容易觸發註冊中心的保護機制,這會使得註冊中心維護的服務例項不那麼準確。所以,我們在本地進行開發的時候,可以使用eureka.server.enable-self-preservation=false引數來關閉保護機制,以確保註冊中心將不可用的例項正確剔除

4、之前註冊多個eureka互相註冊,那麼是否相應的服務需要新增多個註冊中心地址

eureka.client.serviceUrl.defaultZone=http://peer:1111/eureka/,http://peer2:2222/eureka/

這樣可以實現高可用的註冊中心,
但是eureka之間的同步機制,簡化一下這一配置,多個eureka例項需要兩兩註冊,就可以實現高可用叢集中心節點完全對等的效果,此時只需要服務註冊中心註冊到其中一個註冊中心,就會同步到其他註冊中心。
如果不是兩兩註冊,例如A->B->C->D->A,就不行。

其次我們還需要開啟自注冊功能。
否則話,eurake-service不會互相註冊下去