核心原理

  1. 服务提供方启动时向注册中心注册自己,并定时向注册中心发送心跳
  2. 当服务注册表被修改时,同时淘汰ReadWrite缓存
  3. 后台线程默认每30s将ReadWrite缓存中的信息同步给ReadOnly缓存
  4. 服务调用方每30s从注册中心的ReadOnly缓存拉取注册表信息,如果ReadOnly缓存中没有数据,会尝试从ReadWrite缓存中取,如果还是没有就从服务注册表中取

SpringCloud-Eureka原理.png

集群模式

Eureka采用的是peer-to-peer模式,集群中每个节点是对等的,当向一个节点注册时,它会同步到集群中其他机器中去,但是不保证一致性
SpringCloud-Eureka集群原理.png

一致性保障

保证的是AP,保证了可用性

常见优化参数

eureka.server.responseCacheUpdateIntervalMs

默认30s。控制ReadWrite缓存同步到ReadOnly缓存的时间

eureka.client.registryFetchIntervalSeconds

默认30s。服务调用方从注册中心拉取注册表的间隔时间

eureka.client.leaseRenewalIntervalInSeconds

默认30s。服务提供方向注册中心发送心跳时间

eureka.client.evictionIntervalTimerInMs

默认60s。检查服务注册时间

eureka.instance.leaseExpirationDurationInSeconds

默认90s。服务提供者超过该时间没有发送心跳则认为宕机