1. Eureka服務配置與進階
1.1. 主要配置
1.1.1. 服務端(eureka.server.*)
enableSelfPreservation默認true,啟用注冊中心的自保護機制,Eureka如果統計到15分鍾之內損失>15%的微服務心跳,則會觸發自保護機制,不再提出服務提供者waitTimeInMsWhenSyncEmpty默認1000605,在Eureka服務器獲取不到集群里對等服務器上的實例時,需要等待的時間,單位為毫秒,單機開發模式建議設置為0
1.1.2. 客戶信息配置(eureka.client.*)
serviceUrl指定服務注冊中心,類型為HashMap,並設置有一組默認值,默認key為defaultZone;默認的Value為http://localhost:8761/eureka,如果服務注冊中心為高可用集群時,多個注冊中心地址以逗號分隔。如果服務注冊中心加入了安全驗證,這里配置的地址格式為http://<username>:<password>@localhost:8761/eurekafetchRegistry是否從Eureka服務端獲取注冊信息,默認trueregistryFetchIntervalSeconds從Eureka服務端獲取注冊信息的間隔時間,單位為秒,默認30registerWithEureka是否要將自身的實例信息注冊到Eureka服務端,默認true
1.1.3. 實例級別配置(eureka.instance.*)
leaseRenewalIntervalInSeconds,Eureka客戶端向服務端發送心跳的時間間隔,單位為秒,默認30leaseExpirationDurationInSeconds,Eureka服務端在收到最后一次心跳之后等待的過期時間上線,單位為秒。超過該時間沒有收到心跳,則服務端會將該服務實例從服務清單中剔除,從而禁止服務調用請求被發送到該實例上appname服務名,默認取spring.application.name的配置值,如果沒有則為unknownhostname主機名,不配置的時候將根據操作系統的主機名來獲取instance-id注冊到eureka的實例id,推薦${spring.cloud.client.ip-address}😒{spring.application.name}😒{server.port}
1.1.4. Ribbon主要配置項({svc}.ribbon.*)
ConnectionTimeout連接超時時間,默認值1000msReadTimeout讀取超時時間,默認1000msServerListRefreshInterval刷新服務列表源的間隔時間,默認30sNFLoadBalancerClassName定制ILoadBalancer實現,默認com.netflix.loadbalancer.ZoneAwareLoadBalancerNFLoadBalancerRuleClassName定制IRule實現,默認com.netflix.loadbalancer.ZoneAvoidanceRuleNFLoadBalancerPingClassName定制IPing,默認com.netflix.loadbalancer.DummyPingNIWSServerListClassName定制ServerList,默認com.netflix.loadbalancer.ConfigurationBasedServerListServerListUpdateClassName定制serverListUpdater,默認com.netflix.loadbalancer.PollingServerListUpdaterNIWSServerListFilterClassName定制ServerListFilter,默認com.netflix.loadbalancer.ZonePreferenceServerListFilter
1.2. Eureka自保護模式
- 避免網絡分區或抖動導致的,服務端與Eureka通信不成功,但實際服務端是存活的
1.3. 心跳檢查和應用檢測
- 實例會定期默認30s,向Eureka Server發送心跳式健康檢查,把自己的狀態服務實例信息上報上去
- 定制注冊
EurekaClient#registerHeathCheck - Spring Cloud配置
eureka.client.healthcheck.enable=true,EurekaHealthCheckHandler中回去執行檢查,DiskSpaceHealthIndicator,RefreshScopeHealthIndicator,HystrixHealthIndicator - 獲取應用信息
GET /eureka/apps/ORDER-SERVICE,獲取XML信息結果 - 實例信息更新延遲的地方有哪些
- 注冊延遲(30s)
- Eureka服務響應延遲(30s)
- Eureka客戶端更新延遲(30s)
- Ribbon服務列表更新延遲(30s)
- 所以最大可能又2分鍾延遲
1.4. 藍綠發布
- 發布工具拉出

1.5. 服務注冊中心對比

