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/eureka
-
fetchRegistry
是否从Eureka服务端获取注册信息,默认true -
registryFetchIntervalSeconds
从Eureka服务端获取注册信息的间隔时间,单位为秒,默认30 -
registerWithEureka
是否要将自身的实例信息注册到Eureka服务端,默认true
1.1.3. 实例级别配置(eureka.instance.*)
-
leaseRenewalIntervalInSeconds
,Eureka客户端向服务端发送心跳的时间间隔,单位为秒,默认30 -
leaseExpirationDurationInSeconds
,Eureka服务端在收到最后一次心跳之后等待的过期时间上线,单位为秒。超过该时间没有收到心跳,则服务端会将该服务实例从服务清单中剔除,从而禁止服务调用请求被发送到该实例上 -
appname
服务名,默认取spring.application.name的配置值,如果没有则为unknown -
hostname
主机名,不配置的时候将根据操作系统的主机名来获取 -
instance-id
注册到eureka的实例id,推荐${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}
1.1.4. Ribbon主要配置项({svc}.ribbon.*)
-
ConnectionTimeout
连接超时时间,默认值1000ms -
ReadTimeout
读取超时时间,默认1000ms -
ServerListRefreshInterval
刷新服务列表源的间隔时间,默认30s -
NFLoadBalancerClassName
定制ILoadBalancer实现,默认com.netflix.loadbalancer.ZoneAwareLoadBalancer
-
NFLoadBalancerRuleClassName
定制IRule实现,默认com.netflix.loadbalancer.ZoneAvoidanceRule
-
NFLoadBalancerPingClassName
定制IPing,默认com.netflix.loadbalancer.DummyPing
-
NIWSServerListClassName
定制ServerList,默认com.netflix.loadbalancer.ConfigurationBasedServerList
-
ServerListUpdateClassName
定制serverListUpdater,默认com.netflix.loadbalancer.PollingServerListUpdater
-
NIWSServerListFilterClassName
定制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. 蓝绿发布
- 发布工具拉出