- Eureka作为微服务中的注册中心,其服务注册与发现的原理如下:
首先有两个角色,一个服务端和客户端,服务端就是Eureka本身,客户端就是服务提供者和消费者,当服务提供者启动会将自己的信息注册到Eureka去,消费者启动会去注册中心拉取服务列表缓存到本地,消费者就可以远程调用服务提供者。客户端会与注册中心保持心跳来证明自己存活,每隔30s客户端会发送心跳给注册中心,默认情况下,每隔90s注册中心会检查是否有收到心跳,如果没有收到心跳会将客户端从服务列表剔除。但是由于服务之间的调用常常会受网络延迟的影响导致心跳没有及时的收到,从而误将客户端剔除,所以Eureka会有自我保护机制来应对这种情况。
- 默认情况下,Eureka的自我保护机制是开启的。
- 自我保护机制的触发:在15分钟内,Eureka收到的心跳总数低于总数的85%,就会开启。
- 自我保护机制的退出:当收到心跳数达到阈值之后,会自动退出自我保护机制。
Eureka与Zookeeper的区别在哪?
- zookeeper保证的是CP,在Zookeeper集群中,当发生网络故障导致master节点和slave节点失联时,剩余的slave节点会进行leader选举,而在选举的过程中,zookeeper集群不可用,不能对外提供注册和查询的服务。
- Eureka保证的是AP,在Eureka集群中,某些节点挂掉,只要有一个Eureka节点存在,就可以对外提供注册和查询服务,但是可能注册信息不是最新的(不保证强一致性)。
Eureka与Nacos的区别?
- Nacos既支持AP也支持CP,默认使用AP和Eureka一样。