1. Eureka Client 在 Eureka Server 注册,然后Eureka Client 每30秒向 Eureka Server 发送一次心跳来更新一次租约。如果 Eureka Client 无法续订租约几次,则会在大约90秒内 Eureka Server 将其从服务器注册表中删除。注册信息和续订将复制到群集中的所有 Eureka Server 节点。来自任何区域的客户端都可以查找注册表信息(每30秒发生一次)根据这些注册表信息,Application Client 可以远程调用 Applicaton Service 来消费服务。
2. Eureka的自我保护机制: 自我保护机制主要在Eureka client和Eureka Server之间存在网络分区的情况下发挥保护作用,在服务端和客户端都有对应实现。 假设在某种特定的情况下(如网络故障),Eureka Client和Eureka Server无法进行通信,此时Eureka Client无法向Eureka Server发起注册和续约请求,Eureka Server中就可能因注册表中的服务实例租约出现大量过期而面临被剔除的危险,然而此时的Eureka Client可能是处于健康状态的(可接受服务访问),如果直接将注册表中大量过期的服务实例租约剔除显然是不合理的。
针对这种情况,Eureka设计了“自我保护机制”。在Eureka Server处,如果出现大量的服务实例过期被剔除的现象,那么该Server节点将进入自我保护模式,保护注册表中的信息不再被剔除,在通信稳定后再退出该模式;在Eureka Client处,如果向Eureka Server注册失败,将快速超时并尝试与其他的Eureka Server惊醒通信。“自我保护机制”的设计大大提高了Eureka的可用性。
自我保护机制的触发:
1. 默认情况下,注册的应用实例每半分钟续租一次,那么一分钟心跳两次,因此*2.
服务实力数:10个,期望每分钟续约数:10*2=20,期望阈值:20*0.85=17,自我保护少于17时触发。
3. eureka源码总结:
1. client
拉取server注册到本地
注册服务
初始化3个定时任务:心跳续约,定时拉取注册表,按需注册
发送下线
2. server
接受服务注册
接受服务心跳
服务剔除
服务下线
集群同步(1. 启动从peer拉取信息, 2. 将注册到自己的服务同步到peer)