Eureka是SpringCloud中的五大组件之一,其主要功能是服务注册与发现,以及服务续约。里面主要包含服务端EureakServer和客户端EurekaClient
Eureka心跳和服务剔除机制是什么
Eureka客户端可以向服务端注册,注册之后通过心跳机制每30s向服务端发送自己的健康状态。eurake服务端会60s扫描服务列表,查询是否有过期的服务,它会将过期的服务单独存放,如果90s没有收到续约,那么会将服务剔除
Eureka心跳机制的底层采用的是什么?
采用了线程池中的定时执行一次任务ScheduleExecutorService接口,周期性定期执行任务
如果网络故障,Eureka是否会一次性剔除服务?
不会,eurake存在保护机制,如果开启,每一次剔除不会超过15%,线上不会开启的
Eureka的服务注册与发现的工作流程
各服务启动的时候,会注册到eureka ,eureka会记录服务地址和端口,服务每30s向 eureka发送请求,报告自身的健康状态。服务会定期从eureka拉取一份服务通信列表,发生服务调用时,通过服务名去列表中获取服务地址
Eureka的自我保护
eureka在运行期间,会监控服务续约的成功率,如果说15分钟之内低于85%,那么eureka保护起来,不让他过期。但是如果服务确实下线了,那么就会出现调用失败的问题,这时候就需要进行服务熔断。
如何实现Eureka的高可用集群?
可以将多个服务同时作为eureka 的客户端和服务端,这些服务之间互相注册,通过心跳机制互相报告自身状态。