Spring Cloud Eureka 之常用配置解析


【原創內容,轉載、引用請注明出處】

1. 配置項解析

1.1 通用配置

# 應用名稱,將會顯示在Eureka界面的應用名稱列
spring.application.name=config-service

# 應用端口,Eureka服務端默認為:8761
server.port=3333

1.2 eureka.server前綴的配置項

# 是否允許開啟自我保護模式,缺省:true
# 當Eureka服務器在短時間內丟失過多客戶端時,自我保護模式可使服務端不再刪除失去連接的客戶端
eureka.server.enable-self-preservation = false

# Peer節點更新間隔,單位:毫秒
eureka.server.peer-eureka-nodes-update-interval-ms = 

# Eureka服務器清理無效節點的時間間隔,單位:毫秒,缺省:60000,即60秒
eureka.server.eviction-interval-timer-in-ms = 60000

1.3 eureka.instance前綴的配置項

# 服務名,默認取 spring.application.name 配置值,如果沒有則為 unknown
eureka.instance.appname = eureka-client

# 實例ID
eureka.instance.instance-id = eureka-client-instance1

# 應用實例主機名
eureka.instance.hostname = localhost

# 客戶端在注冊時使用自己的IP而不是主機名,缺省:false
eureka.instance.prefer-ip-address = false

# 應用實例IP
eureka.instance.ip-address = 127.0.0.1

# 服務失效時間,失效的服務將被剔除。單位:秒,默認:90
eureka.instance.lease-expiration-duration-in-seconds = 90

# 服務續約(心跳)頻率,單位:秒,缺省30
eureka.instance.lease-renewal-interval-in-seconds = 30

# 狀態頁面的URL,相對路徑,默認使用 HTTP 訪問,如需使用 HTTPS則要使用絕對路徑配置,缺省:/info
eureka.instance.status-page-url-path = /info

# 健康檢查頁面的URL,相對路徑,默認使用 HTTP 訪問,如需使用 HTTPS則要使用絕對路徑配置,缺省:/health
eureka.instance.health-check-url-path = /health

1.4 eureka.client前綴

# Eureka服務器的地址,類型為HashMap,缺省的Key為 defaultZone;缺省的Value為 http://localhost:8761/eureka
# 如果服務注冊中心為高可用集群時,多個注冊中心地址以逗號分隔。 
eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka

# 是否向注冊中心注冊自己,缺省:true
# 一般情況下,Eureka服務端是不需要再注冊自己的
eureka.client.register-with-eureka = true

# 是否從Eureka獲取注冊信息,缺省:true
# 一般情況下,Eureka服務端是不需要的
eureka.client.fetch-registry = true

# 客戶端拉取服務注冊信息間隔,單位:秒,缺省:30
eureka.client.registry-fetch-interval-seconds = 30

# 是否啟用客戶端健康檢查
eureka.client.health-check.enabled = true

# 
eureka.client.eureka-service-url-poll-interval-seconds = 60

# 連接Eureka服務器的超時時間,單位:秒,缺省:5
eureka.client.eureka-server-connect-timeout-seconds = 5

# 從Eureka服務器讀取信息的超時時間,單位:秒,缺省:8
eureka.client.eureka-server-read-timeout-seconds = 8

# 獲取實例時是否只保留狀態為 UP 的實例,缺省:true
eureka.client.filter-only-up-instances = true

# Eureka服務端連接空閑時的關閉時間,單位:秒,缺省:30
eureka.client.eureka-connection-idle-timeout-seconds = 30

# 從Eureka客戶端到所有Eureka服務端的連接總數,缺省:200
eureka.client.eureka-server-total-connections = 200

# 從Eureka客戶端到每個Eureka服務主機的連接總數,缺省:50
eureka.client.eureka-server-total-connections-per-host = 50

2. 配置項說明

Eureka中有一些配置項,通過查看網上的資料可以大概知道其含義,然而如果沒有一個直觀的指導,並不能清晰地認識他們實際的作用效果。下面通過截圖對部分配置項加以解釋說明。

2.1 spring.application.name和eureka.instance.appname

同時配置時,eureka.instance.appname優先級更高。

如果沒有配置eureka.instance.appname,則使用spring.application.name的值,如果連spring.application.name都沒有配置,則取unknown

該配置項對應Eureka界面下圖紅框的內容:

2.2 eureka.instance.instance-id

配置項eureka.instance.instance-id的值決定了下圖右側紅框中的顯示內容:

如果沒有設置eureka.instance.instance-id,那么顯示的值將是一個由Eureka自動判斷生成的編號:

2.3 eureka.instance.prefer-ip-address、eureka.instance.hostname、eureka.instance.ip-address

eureka.instance前綴的配置項中,這幾個配置項絕對燒腦,根據周立的博客,在eureka.instance.prefer-ip-address = true時,實例優先使用eureka.instance.ip-address的值進行注冊,如果沒有配置eureka.instance.ip-address,則使用第一個非回環IP地址進行注冊。

此時,我們打開Eureka的界面,在實例上右鍵,復制鏈接地址;或將鼠標放在下圖右上方的鏈接上(不點擊),就可以獲取實例的地址,如下圖左下角,可見此時實例注冊的是IP:

而當eureka.instance.prefer-ip-address = false時,同樣的方式可以查看實例注冊地址采用了主機名eureka.instance.hostname的值:

3. 配置Bean源碼

最后,對應於本文出現的配置項,Eureka中定義的源碼類如下。

eureka.server前綴的配置項

org.springframework.cloud.netflix.eureka.server.EurekaServerConfigBean

eureka.instance前綴的配置項

org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean

eureka.client前綴的配置項

org.springframework.cloud.netflix.eureka.EurekaClientConfigBean

參考博文:

周立的博客

https://www.cnblogs.com/liaojie970/p/8807023.html

https://www.cnblogs.com/li3807/p/7282492.html

https://www.jianshu.com/p/c18d140ad9f6


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM