核心原理
- 服务提供方启动时向注册中心注册自己,并定时向注册中心发送心跳
- 当服务注册表被修改时,同时淘汰ReadWrite缓存
- 后台线程默认每30s将ReadWrite缓存中的信息同步给ReadOnly缓存
- 服务调用方每30s从注册中心的ReadOnly缓存拉取注册表信息,如果ReadOnly缓存中没有数据,会尝试从ReadWrite缓存中取,如果还是没有就从服务注册表中取
集群模式
Eureka采用的是peer-to-peer模式,集群中每个节点是对等的,当向一个节点注册时,它会同步到集群中其他机器中去,但是不保证一致性
一致性保障
保证的是AP,保证了可用性
常见优化参数
eureka.server.responseCacheUpdateIntervalMs
默认30s。控制ReadWrite缓存同步到ReadOnly缓存的时间
eureka.client.registryFetchIntervalSeconds
eureka.client.leaseRenewalIntervalInSeconds
eureka.client.evictionIntervalTimerInMs
eureka.instance.leaseExpirationDurationInSeconds
默认90s。服务提供者超过该时间没有发送心跳则认为宕机
