Eureka 知識點總結

2021-08-22 06:13:37 字數 4648 閱讀 9865

一. eureka server (以下簡稱es)

在服務不是正常下線的情況下,es 會每隔 60s(預設值) 將當前清單中超時 90s(預設值) 沒有續約(心跳)的服務剔除。

在 es 出現15分鐘內統計心跳失敗比例(本人認為是15分鐘內統計的心跳次數)低於百分之85的情況下。會出現自我保護狀態(es 頁面出現紅色警告 emergency……)。es 會將當前的服務例項保護起來,讓這些例項不會過期,盡可能保護這些註冊資訊(本地很容易出現這種狀態,生產環境出現的原因一般會因為 es 網路波動), 關閉:eureka.server.enableselfpreservation=false。

預設情況下 es 是通過心跳來檢測乙個服務是否可用的,這種檢測機制很不可靠,如果乙個服務的資料庫鏈結、redis 鏈結、訊息**失效了,我們也應當認為它是不可用的服務。為了更準確的確認服務的可用性,我們只需依賴 spring-boot-starter-actuator 模組,並設定 eureka.client.healthcheck.enabled=true 即可。如果客戶端的 /health 端點做了特殊處理,比如字首等等,也要做相應的處理。 如:eureka.instance.health-check-url-path=prefix/health

二. eureka client (以下簡稱ec)

獲取服務例項清單間隔:30s

ec 啟動後,不會立即向 es 註冊,他有乙個延遲向服務端註冊的時間,40s(預設值)

剛剛註冊的 ec 也不會立即被其他服務呼叫,因為每個 ec 獲取新例項列表的時間是 30s

三.詳細配置

配置字首:eureka.client

更加詳細的配置看原始碼 org.springframework.cloud.netflix.eureka.eurekaclientconfigbean

引數名

說明預設值

enabled

啟動 eureka 客戶端

true

registryfetchintervalseconds

從 eureka 服務端獲取註冊資訊的間隔時間,單位秒

30instanceinforeplicationintervalseconds

更新例項資訊的變化到 eureka 服務端的間隔時間,單位秒

30initialinstanceinforeplicationintervalseconds

初始化例項資訊到 eureka 服務端的間隔時間,單位秒

40eurekaserviceurlpollintervalseconds

輪詢 eureka 服務端位址更改的間隔時間,單位秒。當我們與 spring cloud config 配合時,動態刷底 eureka 的 serviceurl 位址時需要關注該引數

300eurekaserverreadtimeoutseconds

讀取 es 資訊的超時時間,單位秒

8eurekaserverconnecttimeoutseconds

鏈結 es 的超時時間,單位為秒

5eurekaservertotalconnections

從 eureka 客戶端到所有 eureka 服務端的鏈結總數

200eurekaservertotalconnectionsperhost

從 eureka 客戶端到每個 eureka 服務端主機的鏈結總數

50eurekaconnectionidletimeoutseconds

eureka 服務端鏈結的空閒關閉時間,單位為秒

30heartbeatexecutorthreadpoolsize

心跳連線池的初始化執行緒數

2heartbeatexecutorexponentialbackoffbound

心跳超時重試延遲的最大乘數值

10cacherefreshexecutorexponentialbackoffbound

快取重新整理超時重試延遲的最大乘數值

10usednsforfetchingserviceurls

使用 dns 來獲取 eureka 服務端的 serviceurl

false

registerwitheureka

是否要將自身的例項資訊註冊到 eureka 服務端

true

prefersamezoneeureka

是否偏好使用處於相同 zone 的 eureka 服務端

true

filteronlyupinstances

獲取例項時是否過濾,僅保留 up 狀態的例項

true

fetchregistry

是否從 eureka 服務端獲取註冊資訊

true

healthcheck.enabled

使用 /health 檢測服務是否可用(需要依賴 actuator 模組)

false

配置字首:eureka.instance

更加詳細的配置看原始碼 org.springframework.cloud.netflix.eureka.eurekainstanceconfigbean

引數名

說明預設值

preferipaddress

是否有優先使用 ip 位址作為主機名的標識

false

leaserenewalintervalinseconds

eureka 客戶端向服務端傳送心跳的時間間隔,單位秒

30leaseexpirationdurationinseconds

eureka 服務端在收到最後一次心跳之後等待的時間上限,單位秒。超過該時間後服務端會將服務例項從服務清單中剔除,從而禁止服務呼叫請求被傳送到該例項上

90nonsecureport

非安全的通訊埠

80secureport

安全的通訊埠

443nonsecureportenabled

是否啟動非安全的通訊埠

true

secureportenabled

是否啟動安全的通訊埠

hostname

主機名,不配置的時候將根據作業系統的主機名來獲取

在上面的 eureka.instance 配置中,除了前三個配置引數在需要的時候可用做一些調整,其他的引數配置大多數情況下不需要進行配置,使用預設值即可。

四.快速搭建(spring cloud dalston.sr5)

4.1 eureka server:

pom.xml

org.springframework.bootgroupid>

spring-boot-starter-actuatorartifactid>

dependency>

org.springframework.cloudgroupid>

spring-cloud-starter-eureka-serverartifactid>

dependency>

server:

port: 8701

eureka:

client:

service-url:

defaultzone: http://peer2:8702/eureka/ #另乙個 es 的位址

spring:

name: eureka-server

啟動類新增註解:

#關閉訪問 health 需要許可權的問題。啟動類新增註解:

@enablediscoveryclient

public

class

public

static

void

main(string args) }

參考資料

spring cloud 微服務實戰

Eureka核心知識點

一 eureka特性 1.當註冊中心掛了,客戶端之間依然可以通過原有的登錄檔進行呼叫 註冊中心重啟後,客戶端會繼續註冊進來 2.當服務提供者掛了,在關閉自我保護的情況下,註冊中心在規定時間 預設是60s 內移除客戶端 關閉eureka註冊中心的自我保護模式,配置如下 eureka server en...

Eureka核心知識點

一 eureka特性 1.當註冊中心掛了,客戶端之間依然可以通過原有的登錄檔進行呼叫 註冊中心重啟後,客戶端會繼續註冊進來 2.當服務提供者掛了,在關閉自我保護的情況下,註冊中心在規定時間 預設是60s 內移除客戶端 關閉eureka註冊中心的自我保護模式,配置如下 eureka server en...

知識點總結

1,迴圈中的中斷 continue 跳出此次迴圈,繼續for迴圈 break 跳出當前for迴圈 return 跳出當前方法 2,字串的操作 componentseparatedbystring stringbyreplacingoccurencesofstring withstring iskin...