Spring Cloud Eureka面试题大全
目录
Q:除了Eureka,还有其他注册中心可选择吗?你是如何选择的?
文档索引
面试题汇总
Q:为什么要使用 Eureka?
A:Eureka是一个开源的注册中心,与SpringCloud无缝集成,相比Zookeeper采用CP的方式,Eureka采用AP的方式保证了高可用
注册中心可看:注册中心面试题大全_九八婆婆的博客-CSDN博客
Q:Eureka 总体流程?
A:Eureka包含三个组件:服务提供者、服务消费者、服务注册中心
服务注册中心:
1、通过@EnableEurekaServer开启注册中心功能,启动后,从其他注册中心节点拉取服务注册信息;
2、运行过程中,定时运行evict任务,剔除没有按时renew的服务(包括非正常停止和网络故障的任务);
3、运行过程中,接收到的register、renew和cancel请求,都会同步至其它注册中心节点;
服务提供者:
1、启动后,向注册中心发起 register 请求,注册服务;
2、在运行过程中,定时向注册中心发送 renew 心跳,证明“我还活着”;
3、停止服务提供者,向注册中心发起 cancel 请求,清空当前服务注册信息;
服务消费者:
1、启动后,从注册中心拉取服务注册信息;
2、在运行过程中,定时更新服务注册信息;
3、服务消费者根据拉取的服务注册信息,远程调用相应的服务提供者;
Q:Eureka 如何进行服务注册发现?
A:
服务注册:服务提供者启动后,向注册中心发起 register 请求, 进行注册自己的信息,如IP,端口,微服务名称等
服务发现:服务消费者启动后,会从注册中心拉取所有的服务注册信息,并缓存至本地,在运行过程中,服务消费者会定时从注册中心拉取最新的服务注册信息。服务消费者会根据本地缓存的服务注册信息,远程调用相应的服务提供者
Q:Eureka 如何进行服务续约和服务下线?
A:
服务续约:默认情况下,客户端的服务实例每隔30秒向Eureka服务端发送一次renew心跳进行服务续约。
服务下线:如果90秒之内Eureka服务端没有收到服务实例的心跳完成续约,该服务实例会被evict任务从注册的服务实例列表中剔除下线。
Q:Eureka 如何进行自保?
A:如果15分钟之内,心跳发送失败的比例低于85%,就会触发Eureka服务端的自我保护机制。Eureka不会剔除通信不正常的服务实例,并且仍然接收客户端的服务的注册与服务的查询。但是不会与其它Eureka服务端节点进行同步。自我保护机制是一种针对网络异常波动的安全保护措施,可以使Eureka集群更加的健壮、稳定的运行。
Q:Eureka 注册中心如何实现高可用?
A:Eureka通过客户端缓存,保证了注册中心不可用期间,服务消费者会将从注册中心拉取的服务注册信息放入本地缓存,如注册中心不可用,服务消费者也可以从缓存中获取注册信息,不影响服务之间的调用。
但如果注册中心不可用期间,某些服务实例也不可用,则会影响整个系统的高可用,所以注册中心也需要实现高可用。
Q:除了Eureka,还有其他注册中心可选择吗?你是如何选择的?
A:除了Eureka,注册中心目前常用的有Zookeeper、Nacos、Consul