zl程序教程

您现在的位置是:首页 >  其他

当前栏目

Eureka的几个面试题总结

2023-04-18 16:18:54 时间

        客户端注册,Eureka客户端在启动时,首先会创建一个心跳的定时任务,定时向服务端发送心跳信息,服务端会对客户端心跳做出响应,如果响应状态码为404时,表示服务端没有该客户端的服务信息,那么客户端则会向服务端发送注册请求。
        服务端如何保存客户端注册信息,客户端通过Jersey框架,将自己的注册信息发送给服务端,服务端保存在一个ConcurrentHashMap对象中。
       客户端如何拉取服务端已保存的服务信息,客户端通过一个定时任务定时向服务端拉取信息,每次拉取后刷新本地已保存的信息,需要使用时直接从本地获取。
       如何搭建高可用的eureka集群,只需要在每一个服务端的配置文件中配置其他服务端的地址就可以了,注册中心收到注册信息后会判断是其他注册中心同步的信息还是客户端注册的信息,如果是客户端注册的信息,那么他将会将该客户端信息同步到其他注册中心去;否则收到信息后不作任何操作。通过此机制避免集群中信息同步的死循环。
       心跳机制,客户端每隔30s想服务端发送一次心跳,告诉服务端自己还活着。
       服务剔除机制,
    如果开了自我保护机制,那么所有的客户端包括没有长时间没有发送心跳的客户端都不会被剔除。
    没开自我保护机制,注册到eureka的服务可能由于内存溢出或网络故障等原因使得服务不能正常的工作,而服务注册中心并未收到“服务下线”的请求。服务注册中心在启动时会创建一个定时任务,默认每隔一段时间(默认为60秒)将当前清单中超时(默认为90秒)没有续约的服务剔除,这个操作被称为失效剔除
       Eureka为什么要采用自我保护机制。在分布式系统的CAP理论中,Eureka采用的AP,也就是Eureak保证了服务的可用性(A),而舍弃了数据的一致性(C)。当网络发生分区时,客户端和服务端的通讯将会终止,那么服务端在一定的时间内将收不到大部分的客户端的一个心跳,如果这个时候将这些收不到心跳的服务剔除,那可能会将可用的客户端剔除了,这就不符合AP理论。