SpringCloud 面试题, Eureka 的实现原理说一下?
SpringCloud 面试题, Eureka 的实现原理说一下?
QA
Step 1
Q:: Eureka 的实现原理说一下?
A:: Eureka 是 Netflix 开源的服务发现组件,Spring Cloud Netflix 提供了对它的封装。它的核心功能是实现微服务的注册与发现。Eureka 的实现原理包括以下几个部分:
1.
服务注册:当一个服务启动时,它会将自己的信息(包括主机、端口、服务ID等)注册到 Eureka Server 中。Eureka Server 维护一个注册表,记录所有可用的服务实例。
2.
服务发现:其他服务可以通过 Eureka Client 从 Eureka Server 查询注册表,获取需要访问的服务的实例列表,从而实现负载均衡调用。
3.
租约(Lease)与续约(Renew):每个服务实例注册后,都会定期向 Eureka Server 发送心跳(即续约请求),Eureka Server 据此认为该服务实例是可用的。如果 Eureka Server 长时间没有接收到某个实例的心跳,它将认为该实例已经不可用,并从注册表中移除。
4.
自我保护机制:当 Eureka Server 检测到短时间内有大量服务实例失联(可能是网络分区等原因),它会进入自我保护模式。在此模式下,Eureka Server 会停止从注册表中删除实例,以保证服务的可用性。
Step 2
Q:: Eureka 的自我保护机制是如何工作的?
A:: Eureka 的自我保护机制是为了防止网络分区问题导致的服务下线。在网络不稳定的情况下,Eureka Server 可能会误认为某些服务实例已不可用,从而将它们从注册表中移除。为避免这种情况,Eureka Server 在检测到短时间内大量服务实例的心跳丢失时,会进入自我保护模式。
自我保护模式下,Eureka Server 不会轻易移除未收到心跳的服务实例,而是保留它们在注册表中。即使没有接收到心跳,Eureka Server 仍会将这些服务实例信息返回给客户端,以保证服务的可用性。