微服務Springcloud超詳細教程 實戰(十)

2021-09-03 01:56:02 字數 1994 閱讀 4188

獲取服務列表

當服務消費者啟動時,會檢測eureka.client.fetch-registry=true引數的值,如果為true,則會從eureka server註冊中心拉取服務列表,然後快取在本地。並且每隔30秒會重新獲取並更新資料。我們可以通過下面的引數來修改:

eureka:

client:

registry-fetch-interval-seconds: 5

生產環境中,我們不需要修改這個值。

但是為了在開發環境下,能夠快速得到服務的最新狀態,我們可以將其設定小一點。

失效剔除

有些時候,我們的服務提供方並不一定會正常下線,可能因為記憶體溢位、網路故障等原因導致服務無法正常工作。eureka server需要將這樣的服務剔除出服務列表。因此它會開啟乙個定時任務,每隔60秒對所有失效的服務(超過90秒未響應)進行剔除。

可以通過eureka.server.eviction-interval-timer-in-ms引數對其進行修改,單位是毫秒,生成環境不要修改。

這個會對我們開發帶來極大的不便,你對服務重啟,隔了60秒eureka才反應過來。開發階段可以適當調整,比如 5s

自我保護

我們關停乙個服務(等待30s左右),就會在eureka面板看到一條警告:

這是觸發了eureka的自我保護機制。當乙個服務未按時進行心跳續約時,eureka會統計最近15分鐘心跳失敗的服務例項的比例是否超過了85%。在生產環境下,因為網路延遲等原因,心跳失敗例項的比例很有可能超標,但是此時就把服務剔除列表並不妥當,因為服務可能沒有宕機。eureka就會把當前例項的註冊資訊保護起來,不予剔除。生產環境下這很有效,保證了大多數服務依然可用。

但是這給我們的開發帶來了麻煩, 因此開發階段我們都會關閉自我保護模式:

在eureka的yml檔案中配置

eureka:

server:

enable-self-preservation: false # 關閉自我保護模式(預設為開啟)

eviction-interval-timer-in-ms: 1000 # 掃瞄失效服務的間隔時間(預設為60*1000ms)

1 eureka伺服器停止之後,服務呼叫方和服務消費方會報錯,原因是啥?

答:當服務註冊到eureka之後,每隔30s需要向eureka註冊中心傳送心跳(續約renew),表示我還活著,當90s內沒有傳送心跳,表明eureka任務此服務暫時無法向外提供服務,就把它保護起來,然後在接下來的15分以內,eureka會不斷的請求這個服務,如果得到正常的響應,就把它調出來,繼續提供服務,如果15分鐘以內,eureka還是收不到響應,那就把它移除服務列表

2 當停止eureka註冊中心之後,服務消費方還可以使用服務提供方嗎?

答:可以,因為有快取

3 服務提供方/服務消費方 是何時去eureka註冊中心獲取其他服務的ip位址和埠號的?

答:結論:第一次啟動的30以內,去eureka註冊中心拉取其他服務快取到本地

4 如果 停止eureka註冊中心之後,修改服務提供方的埠,此時服務呼叫方就無法請求服務

5 在不停止eureka註冊中心的情況下,如果修改服務提供方的埠,那此時服務呼叫方會收到響應嗎?

答: 需要等待幾分鐘,可以繼續提供新埠的服務

6、eureka中是以雙層map結構(巢狀map)儲存服務資訊

微服務Springcloud超詳細教程 實戰(六)

這章接著第五章沒說完的繼續說 1.大小寫敏感 2.使用縮排表示層級關係 3.禁止使用tab縮排,只能使用空格鍵 4.縮排長度沒有限制,只要元素對齊就表示這些元素屬於乙個層級 5.使用 表示注釋 6.字串可以不用引號標註yaml yet another markup language 另一種標記語言 ...

SpringCloud 微服務與微服務對接心德

對方已經提供好乙個api文件,然後傳一堆傳輸,返回給我一些資訊。如下 我這邊建立實體類,返回值這些東西,如下 介面如下 feignclient還有以下標籤 name 指定feignclient的名稱,如果專案使用了ribbon,name屬性會作為微服務的名稱,用於服務發現 url url一般用於除錯...

微服務架構 spring cloud

微服務架構搭建步驟 1.建立服務註冊中心 1 填加依賴 org.springframework.cloudgroupid spring cloud starter eureka serverartifactid dependency org.springframework.cloudgroupid ...