Spring Cloud Netflix Eureka Server Configuration

整理之前的筆記,發現有一些內容沒有發出來,陸續發出來。。。

概述

Eureka的配置包括三個部分,eureka.instance、eureka.server和eureka.client。eureka.instance是公共配置,eureka.server配置server的行爲,eureka.client配置client的行爲。

Eureka Server集羣,Eureka Client集羣
運行時
Eureka Server集羣可能添加或者移除實例
Eureka Client集羣可能添加或者移除實例
在所有場景的下,Eureka都有相關的配置

Eureka Server是分zone的,默認是defaultZone,默認的EurekaServer service-url是localhost:8761/eureka/;

Eureka裏面的概念:
一個Eureka Server是一個Peer,一個Eureka Server或者一個Eureka Client叫一個Instance,一個Eureka Client就是一個Eureka Client。

EIP = Elastic IP 彈性公網IP

Application的概念:一個Application包含多個InstanceInfo
AppGroup的概念

peer-aware模式,就是指的高可用模式,可以和其他的Eureka server相互複製註冊信息,從而對外提供負載均衡和彈性(即服務的持續可用性)

datacenter

Eureka提供了三種可選選擇,Netflix, Amazon, MyOwn,默認是MyOwn,使用MyDataCenterInfo類的對象,對自家的Amazon做了特殊的支持AmazonInfo,沒有對Netflix做單獨的支持,估計是netflix公司自己用的,這部分沒開源。

Delta Change

delta change代表了一時間窗口內註冊信息的變化,這個時間窗口的大小可以通過eureka.server.RetentionTimeInMSInDeltaQueue來設置。註冊信息可能發生的變化包括,註冊、取消註冊、狀態變化、實例過期;通常,對於生產環境,這些變化比較少,所以配置Eureka Client只獲取delta change會比獲取全部的註冊信息高效的多。

Region和Available Zone

Eureka Zone、Eureka region:一個region有多個zone;
地域(Region)和可用區(AZ:Available Zone)
Available Zone阿里雲翻譯成可用區
region阿里雲翻譯成地域

不同region:不同城,不同region的內網是不通的
不同zone,同城不同機房,同一個地域內的不同可用區之間,內網是連通的,但是網絡的響應時間會有差異。

參考:
Spring Cloud源碼分析(一)Eureka
雲端中間層負載均衡工具 Eureka
微服務基礎設施之服務註冊中心: Spring Cloud Eureka(好)
Region和Available Zone的區別

注意:
region 和 Available Zone在阿里雲上都有對應的概念,後面可以根據Eureka的相關配置,配置一個多zone的版本,測試一下。

image

registry

AbstractInstanceRegistry
private final ConcurrentHashMap<String, Map<String, Lease<InstanceInfo>>> registry
            = new ConcurrentHashMap<String, Map<String, Lease<InstanceInfo>>>();

這就是Eureka 的文檔裏到處說的registry。

Eureka Peer模式架構

image

場景

場景1

Eureka server和client之間每隔30秒會進行一次心跳通信,告訴server,client還活着。由此引出兩個名詞:
Renews threshold:server期望在每分鐘中收到的心跳次數
Renews (last min):上一分鐘內收到的心跳次數。

Renews threshold的計算方法:
閾值(threshold)是1,client個數爲n,閾值爲1+2n,自注冊的話,是2+2n
Renews (last min):2*n(n是所有application的實例個數,有的application有多個實例,都要算在裏面)

參考:spring cloud 學習筆記-Eureka

場景2

spring cloud eureka:架構講解,值得讀。

DiscoveryClient包含了所有client和Instance的相關屬性的應用;

eureka.client

一共34個配置。包括了
幾個控制全局的信息。
enabled:true
fetchRegistry:true=首先配置client是否從Eureka Server上拉取註冊信息
registerWithEureka:true=自己是否註冊到Eureka Server

我所知道的Eureka Server

eurekaServerURLContext
eurekaServerPort
eurekaServerDNSName
registryRefreshSingleVipAddress:這個再看!
serviceUrl:eureka server的地址列表

與Eureka Server

registryFetchIntervalSeconds:30
instanceInfoReplicationIntervalSeconds:30=Eureka實例的變更多久可以複製到Eureka Server
initialInstanceInfoReplicationIntervalSeconds:40=Eureka實例啓動之後多久複製信息到Eureka Server
eurekaServiceUrlPollIntervalSeconds:5x60=Eureka Client多久主動心跳一次Eureka Server,如果有Eureka Server 實例添加或者移除,Eureka Client將在下一次心跳Eureka Server的時候感知到。
eurekaServerReadTimeoutSeconds:主動請求Eureka Server時,多久算超時
eurekaServerConnectTimeoutSeconds:建立鏈接時的超時時間,跟上一個區別在於使用地方不同?
backupRegistryImpl:這個再看!
filterOnlyUpInstances:true=只拉取狀態爲UP的instance

與Eureka Server的連接控制

eurekaServerTotalConnections:200
eurekaServerTotalConnectionsPerHost:50
eurekaConnectionIdleTimeoutSeconds:30

與Eureka Server的連接細節

gZipContent:true=從eureka server返回的信息是否必須被壓縮
useDnsForFetchingServiceUrls:false=是否使用DNS,service-url
dollarReplacement
escapeCharReplacement
allowRedirects:false
onDemandUpdateStatusChange

心跳

heartbeatExecutorThreadPoolSize:2=心跳執行器線程池大小
heartbeatExecutorExponentialBackOffBound:10=心跳間隔算法,指數退避算法的遞增倍數
cacheRefreshExecutorThreadPoolSize:2=刷新本地緩存的線程池的大小
cacheRefreshExecutorExponentialBackOffBound:10=

設置代理

proxyPort
proxyHost
proxyUserName
proxyPassword

關於Zone

availabilityZones:
preferSameZoneEureka:true=是否首先嚐試同一個zone內的Eureka Server集羣上拉取服務註冊信息
logDeltaDiff:
fetchRemoteRegionsRegistry:

eureka.server

Renew:服務續約

aws支持

aWSAccessId
aWSSecretKey
eIPBindRebindRetries
eIPBindingRetryIntervalMs
eIPBindingRetryIntervalMsWhenUnbound
aSGQueryTimeoutMs
aSGUpdateIntervalMs
aSGCacheExpiryTimeoutMs
primeAwsReplicaConnections

Eureka Server 行爲控制

Renewal:服務續約具體的操作就是服務心跳
enableSelfPreservation:eureka server是否開啓自我保護
RenewalPercentThreshold:進入自我保護的最小閥值,實際收到的心跳/期望收到的心跳比值大於這個值,就不會進入自我保護狀態
RenewalThresholdUpdateIntervalMs: 閾值更新的時間間隔。所以一個Eureka Server的新註冊和移除的Eureka Client,15內纔會被感知到。
PeerEurekaNodesUpdateIntervalMs:Eureka Server定時更新自己的配置,利用DNS機制或者Archaius提供的動態配置的能力動態更新自己的配置

Eureka Server之間的通信的行爲控制

numberOfReplicationRetries:peer之前複製信息嘗試的次數,這個信息可以在運行時被更新
peerEurekaStatusRefreshTimeIntervalMs:一個peer(Eureka Server)的狀態信息的刷新間隔
waitTimeInMsWhenSyncEmpty:Eureka Server剛啓動的時候,互相之間沒必要同步信息,因爲都是空的,都沒有接收Eurekaclient的註冊,這個時間就是設置這個等待時間的。過了這段時間之後,各個Eureka Server之間纔開始同步註冊信息
peerNodeConnectTimeoutMs:
peerNodeReadTimeoutMs
peerNodeTotalConnections
peerNodeTotalConnectionsPerHost
peerNodeConnectionIdleTimeoutSeconds
retentionTimeInMSInDeltaQueue:delta information保存的時間,默認3分鐘
evictionIntervalTimerInMs:清理註冊的客戶端的時間間隔

和Eureka Client的幾件事

disableDelta
responseCacheAutoExpirationInSeconds:當註冊表信息被改變時,則其被保存在緩存中不失效的時間,默認爲180秒
responseCacheUpdateIntervalMs:緩存的過期時間,客戶端的有效負載緩存應該更新的時間間隔,默認爲30 * 1000毫秒
useReadOnlyResponseCache
syncWhenTimestampDiffers:是否與Eureka client 同步時間戳
rateLimiterEnabled
rateLimiterThrottleStandardClients
rateLimiterPrivilegedClients
rateLimiterBurstSize
rateLimiterRegistryFetchAverageRate
rateLimiterFullFetchAverageRate

註冊信息複製

maxIdleThreadInMinutesAgeForStatusReplication
minThreadsForStatusReplication
maxThreadsForStatusReplication
maxElementsInStatusReplicationPool
registrySyncRetries:Eureka Server啓動階段嘗試從其他的Eureka Server獲取註冊信息的次數
registrySyncRetryWaitMs
maxIdleThreadAgeInMinutesForPeerReplication
minThreadsForPeerReplication
maxThreadsForPeerReplication
maxTimeForReplication
batchReplication:

Region相關,與其他region內的Eureka Server的交互

disableDeltaForRemoteRegions
remoteRegionConnectTimeoutMs
remoteRegionReadTimeoutMs
remoteRegionTotalConnections
remoteRegionTotalConnectionsPerHost
remoteRegionConnectionIdleTimeoutSeconds
gZipContentFromRemoteRegion
remoteRegionUrlsWithName
remoteRegionUrls
remoteRegionAppWhitelist
remoteRegionRegistryFetchInterval
remoteRegionFetchThreadPoolSize
remoteRegionTrustStore
remoteRegionTrustStorePassword
disableTransparentFallbackToOtherRegion

eureka.instance

LeaseRenewalIntervalInSeconds:eureka客戶需要多長時間發送心跳給eureka服務器,表明它仍然活着,默認爲30 秒。租約續約間隔。(完美)

LeaseExpirationDurationInSeconds: Eureka服務器在接收到實例的上一次發出的心跳後,最大容忍時間,過了這個時間還沒再次收到心跳的話,就刪掉,默認爲90秒

VirtualHostName
SecureVirtualHostName
HostName
MetadataMap:這個map裏的信息,會被髮送給Eureka Server,並且可以被其他的Instance使用
IpAddress
DefaultAddressResolutionOrder:獲取實例的網絡地址,默認爲[]

各種url

StatusPageUrlPath
StatusPageUrl
HomePageUrlPath
HomePageUrl
HealthCheckUrlPath
HealthCheckUrl
SecureHealthCheckUrl

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章