客户端注册,Eureka客户端在启动时,首先会创建一个心跳的定时任务,定时向服务端发送心跳信息,服务端会对客户端心跳做出响应,如果响应状态码为404时,表示服务端没有该客户端的服务信息,那么客户端则会向服务端发送注册请求。
服务端如何保存客户端注册信息,客户端通过Jersey框架,将自己的注册信息发送给服务端,服务端保存在一个ConcurrentHashMap对象中。
客户端如何拉取服务端已保存的服务信息,客户端通过一个定时任务定时向服务端拉取信息,每次拉取后刷新本地已保存的信息,需要使用时直接从本地获取。
如何搭建高可用的eureka集群,只需要在每一个服务端的配置文件中配置其他服务端的地址就可以了,注册中心收到注册信息后会判断是其他注册中心同步的信息还是客户端注册的信息,如果是客户端注册的信息,那么他将会将该客户端信息同步到其他注册中心去;否则收到信息后不作任何操作。通过此机制避免集群中信息同步的死循环。
心跳机制,客户端每隔30s想服务端发送一次心跳,告诉服务端自己还活着。
服务剔除机制,
如果开了自我保护机制,那么所有的客户端包括没有长时间没有发送心跳的客户端都不会被剔除。
没开自我保护机制,注册到eureka的服务可能由于内存溢出或网络故障等原因使得服务不能正常的工作,而服务注册中心并未收到“服务下线”的请求。服务注册中心在启动时会创建一个定时任务,默认每隔一段时间(默认为60秒)将当前清单中超时(默认为90秒)没有续约的服务剔除,这个操作被称为失效剔除
Eureka为什么要采用自我保护机制。在分布式系统的CAP理论中,Eureka采用的AP,也就是Eureak保证了服务的可用性(A),而舍弃了数据的一致性(C)。当网络发生分区时,客户端和服务端的通讯将会终止,那么服务端在一定的时间内将收不到大部分的客户端的一个心跳,如果这个时候将这些收不到心跳的服务剔除,那可能会将可用的客户端剔除了,这就不符合AP理论。
javaeureka javaeureka面试题
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
下一篇:AD 域组织架构 ad域基本知识
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【面试题】三道面试题
1. 说出以下代码的打印结果:2. 说出以下代码的打印结果:3. `==` 和 `===` 有什么区别?
js javascript bind 构造函数 数据类型 -
【面试题】大厂面试题资料
一、参考资料小公司工作一年半,准备社招跳槽去大厂!
面试题 JAVA 参考资料 -
idea中插件redishelper使用
1 命令行不知道大家在日常操作redis时用什么可视化工具呢?以前总觉得没有什么太好的可视化工具,于是问了一个业内朋友。对方回:你还用可视化工具?直接命令行呀,redis提供了这么多命令,操作起来行云流水。用可视化工具觉得很low。命令行的鄙视用工具的,用高端工具的鄙视低端工具的,鄙视链一直存在。虽然用命令行自己也可以,但是总感觉效率上不如用工具,在视觉上不那么直观。尤其是看json的时候,在命令
idea redis 插件 idea redis 插件收费 idea redis插件 idea 连接redis插件 redis scan 效率太慢