内容来自《Java Web 程序员面试笔试宝典》

【出现频率】★★★☆☆ 【学习难度】★★★☆☆

答案:Eureka是一个服务注册和发现模块。由两个组件组成:EurekaServer端和Eureka Client端。Eureka Server端是服务注册中心,Eureka Client端用于与EurekaServer交互,向服务端注册服务,并从服务端发现服务。Eureka遵循的是AP原则,强调可用性与分区容错性。

Eureka Client 端各个节点启动后,会在Eureka Server端中进行注册,Server端会存储所有可用服务节点的信息,服务节点的信息可以在dashboard界面中直观地看到。Eureka Server之间通过复制的方式完成数据的同步,Eureka还提供了Client端缓存机制,即使所有的Eureka Server都挂掉,Client端依然可以利用缓存中的信息消费其他服务的API。Eureka 通过心跳检查、Client 端缓存等机制,确保了系统的高可用性、灵活性和可伸缩性。

Eureka Client端有一个内置的、使用轮询(round-robin)算法的负载均衡器。在应用启动后,将会向Eureka Server端发送心跳(默认周期为30s)。如果Eureka Server端在多个心跳周期内没有接收到某个节点的心跳,Eureka Server端将会从服务注册表中把这个服务节点移除(默认90s),这就是失效剔除,另一个机制是自我保护。