面试题
- 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对象内部维护了实例对象集合。
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 只支持心跳模式 |