一. eureka server (以下簡稱es)
在服務不是正常下線的情況下,es 會每隔 60s(預設值) 將當前清單中超時 90s(預設值) 沒有續約(心跳)的服務剔除。二. eureka client (以下簡稱ec)在 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
獲取服務例項清單間隔: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...