Eureka的基础知识

Eureka(注册、发现、心跳)

服务注册:服务启动时会把服务信息(服务ID、IP、端口等)发送给Server的注册表中。
服务发现:调用方通过Server的注册表找到可调用的服务ID。
心跳监测:服务方会定期(默认30秒)对Server发送续约请求,如果在90秒内没有收到续约请求,Server端就会从注册表中删除该服务信息。

Eureka集群

与zk相比,Eureka不存在主从关系,注册表是通过互相复制的方式进行同步的。
当某台Eureka宕机时,请求会自动切换到新的Eureka节点。当宕机的服务器重启后,该Eureka会自动再次纳入集群中。

Eureka集群的复制算法

https://blog.csdn.net/cyq12345_/article/details/78805303

Eureka自我保护模式

当网络问题造成Eureka和微服务无法通信时(服务是正常的),此时是不能注销微服务的,因此Eureka提供了自我保护模式解决这个问题,当节点短时间内丢失过多服务时,那么就会自动进入自我保护模式,进入该模式后,Eureka就不会再注销任何服务,当网络故障恢复后,节点会自动退出保护模式。

保护机制触发条件为: 

expectedNumberOfRenewsPerMin(期望每分钟最大更新次数) = 当前注册的应用实例数 * 2
numberOfRenewsPerMinThreshold(期望每分钟最小的更新次数) = expectedNumberOfRenewsPerMin*续租百分比(eureka.server.renewal-percent-threshold =0.85)
假设实例为2,那么计算为 (2 * 2) * 0.85,最小更新次数为3.4,取整3。

Eureka会在renewalThresholdUpdateIntervalMs(阈值更新的时间间隔)默认15分钟计算一次这个值。如果在15分钟内每分钟低于3的话,这个节点就会进入保护模式。

那么为什么是实例数*2呢,因为Eureka默认是30秒续签,那么每分钟就是两次。

因此如果改了心跳监控时间参数的同学有可能会出现无法触发保护机制的情况,需要根据修改的参数计算一下。

Eureka和Zookeeper的区别

在讲区别之前大家最好先了解一下CAP原则,这里不做解释。
Zookeeper保证CP
当发现主机down后会把集群停下,并在剩下的节点进行选举(网上说30~120s,问过同事并没有那么久),最终恢复服务。
Eureka保证AP
当服务向Server发送请求时失败,服务会自动切换到其他节点,只要有一台还在启动就可以保证可用,只是查到的注册表可能不是最新的。(无法保证一致性)。

猜你喜欢

转载自www.cnblogs.com/nicori/p/11648250.html
今日推荐