1,Eureka Server启动成功,等待服务端注册。启动过程中如果配置了集群,集群之间定时通过Replicate同步注册,每个Eureka Server都存在独立完整的服务注册表信息。
2,Eureka Client启动时根据配置的Eureka Server地址去注册中心注册服务。
3,Eureka Client会每30S向Eureka server发送一次心跳请求,证明客户端服务正常。
4,当Eureka server 90s内没有收到Eureka client的心跳,注册中心,则认为该节点失效会注销该实例。
5,单位时间内Eureka Server统计到大量的Eureka Client没有上送心跳,则认为可能网络异常,进入自我保护机制,不在提出有上送心跳的客户端。
6,当Eureka Client心跳请求恢复正常之后,Eureka Server。
7,Eureka Client定时全量或者增量从注册中心获取注册列表,并且将获取到的信息缓存到本地。
8,服务调用时,Eureka client会从本地缓存寻找调用的服务,如果获取不到,先从注册中心刷新注册列表,再同步到本地缓存。
9,Eureka Client 获取到目标服务器信息,发起服务调用。
10,Eureka client程序关闭时,向Eureka server 发送取消请求,Eureka Server将实例从注册表中删除。
总结:
Eureka 为了保障注册中心的高可用性,容忍了数据的非强一致性,服务节点间的数据可能不一致, Client-Server 间的数据可能不一致。比较适合跨越多机房、对注册中心服务可用性要求较高的使用场景。