面试题

  • 1. Nacos服务注册表结构是什么样的?
  • 2. 消费者是如何调用提供者的
  • 3. 负载均衡通过什么实现
  • 4. 为什么要定义bootstrap.yml
  • 5. Nacos配置中心宕机,还能读取到配置吗
  • 6. 服务提供者如何向Nacos注册中心续约
  • 7. 如何确定实例状态
  • 8. Nacos CAP
  • 9. Nacos和Eureka区别


1. Nacos服务注册表结构是什么样的?

Nacos最外层是namespace隔离环境,然后是group对服务进行分组,然后就是服务,一个服务下 有多个集群,集群下有多个实例。

对应Java代码,Map<String,Map<String,Service>>,最外层的key是namespaceId,值是map,内部map大的key是group拼接serviceName(group@@serviceName),值是service对象;

service对象内部又是一个map,key是集群名称,值是Cluster对象,Cluster对象内部维护了实例对象集合。

nacos 注册中心 配置中心 区别 nacos注册中心面试题_nacos 注册中心 配置中心 区别

2. 消费者是如何调用提供者的

通过创建RestTemplate对象来实现。

3. 负载均衡通过什么实现

Ribbon

4. 为什么要定义bootstrap.yml

此文件优先级比较高,可以在服务启动的时候读取配置中心的数据。

5. Nacos配置中心宕机,还能读取到配置吗

可以,客户端读取到配置信息以后会缓存在本地内存,因此可以在内存中拿到数据。

6. 服务提供者如何向Nacos注册中心续约

5s心跳

7. 如何确定实例状态

通过发送心跳包,5秒发送一次,如果15秒没有回应,则说明服务出现了问题,
如果30秒后没有回应,则说明服务已经停止。

8. Nacos CAP

Nacos的 CP 和 AP 架构的选择,取决于我们配置的服务实例是临时实例还是持久实例。

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        group:  mall-order
        cluster-name: SH
        ephemeral: false   //持久化实例,使用 CP架构
        ephemeral: true	   //临时实例,使用 AP架构

9. Nacos和Eureka区别

Nacos

Eureka

服务发现

Nacos采用定时拉取和订阅推送两种模式

Eureka只支持定时拉取模式

实例类型

Nacos有永久实例和临时实例两种

Eureka 只有临时实例

健康检测

Nacos对临时实例采用心跳检测,对永久实例采用主动请求

Eureka 只支持心跳模式