Nacos 相关面试问题及答案

Nacos 是什么?

Nacos (Naming and Configuration Service) 是一个开源项目,是由 Alibaba 开发的,它致力于提供动态服务发现、服务健康监测、动态配置服务以及服务管理的平台,它被设计用于帮助构建云原生应用,是微服务架构中的一个关键组件,Nacos 提供服务注册和配置管理,帮助企业轻松地在云环境中实现自动化运维。

Nacos 主要有以下核心功能:

  • 注册中心:在微服务架构中,服务实例可能会在多个服务器上动态地启动或关闭,因此需要一个注册中心来动态地维护和管理这些服务实例,Nacos 能自动注册服务实例,并通过健康检查机制来保证服务实例的可用性,同时 Nacos 可以支持 AP 和 CP 两种模式。
  • 配置中心:应用服务的配置动态管理是微服务中非常重要的一环,过去我们常用 Apollo、consul 来做配置中心,我们如果使用了 Nacos 作为注册中心,不妨直接使用 Nacos 做配置中心,Nacos 允许开发人员动态管理应用配置,无需重启服务即可实现配置的实时更新。
  • 服务元数据和流量管理:Nacos 支持服务元数据的管理,允许用户定义服务级别的元数据信息,如加载均衡策略、路由策略等,从而实现更灵活的流量管理和服务治理。
  • 持久化存储:Nacos支持将服务和配置信息持久化到外部存储系统,比如MySQL数据库中,以确保数据的安全和稳定。

Nacos 和 Eureka有什么区别?

功能范围:

  • Eureka:仅提供注册中心功能, 是 Spring Cloud Netflix 组件之一,与 Spring Cloud 无缝集成。
  • Nacos:除了提供注册中心功能之外,还提配置中心、服务元数据信息管理等,对比 Eureka,Nacos 是一个功能更强大的微服务组件。

数据一致性:

  • Eureka:采用的是AP(可用性和分区容错性)设计,它不保证每次服务列表都是最新的,但可以保证高可用。
  • Nacos:可以在AP模式和CP(一致性和分区容错性)模式之间切换,在CP模式下,Nacos可以提供更强的数据一致性保证。

社区和生态支持:

  • Eureka:由于 Spring Cloud Netflix 进入维护模式,Eureka 2.x的开发已经停止,而Eureka 1.x的维护也只限于关键问题的修复,社区对 Eureka 的支持可能不如 Nacos 活跃。
  • Nacos:作为一个较新的项目,获得了阿里巴巴的积极维护和社区的广泛支持,持续更新和增加新特性。

运行模式:

  • Eureka:主要是以客户端发现的模式运行,服务实例信息由客户端缓存并定时从服务器刷新。
  • Nacos:不仅支持客户端的服务发现,也支持服务端的服务发现,而且客户端也可以通过长连接实时接受配置更新和服务列表变更的推送。

Nacos 是如何注册和发现服务的?

服务注册:

  1. 当服务实例启动时,它会通过 Nacos 客户端(通常集成在应用程序中)将自己的信息,如服务名称、IP地址、端口号、版本号以及其他元数据发送(Nacos 1.X 是通过 HTTP 的方式,Nacos 2.X 是通过 GRPC 的方式)到 Nacos 服务器,完成服务注册。
  2. 服务实例注册到 Nacos 后,它会定期(默认 5秒每次)向Nacos服务器发送心跳,证明自己仍然是健康和可用的,如果 Nacos 服务器在指定时间(默认 15秒)内没有收到某个服务实例的心跳,它会认为该实例是不健康的,如果 Nacos 服务器在指定时间(默认 30秒)内没有收到某个服务实例的心跳,会认定其是僵尸实例,并将其从服务列表中移除。

服务发现:

  1. 当客户端需要访问某个服务时,它会向 Nacos 服务器查询该服务的健康实例列表。
  2. Nacos 服务器会返回服务实例(有可能有不健康的服务实例)信息给客户端,客户端通常会缓存这些服务信息。
  3. 客户端还可以注册监听器到 Nacos 服务器,监听服务实例列表的变更,当有新的服务实例注册或有服务实例被移除时,Nacos 服务器会推送变更到客户端,客户端更新本地缓存的服务列表。

Nacos如何实现高可用?

  • 集群部署:Nacos 支持集群部署,在集群模式下,当一条数据被修改,这个变更会同步到所有节点,确保每个节点都拥有最新的数据状态。
  • 数据持久化:Nacos 支持将服务和配置数据持久化到外部存储中,如 MySQL 数据库,这样即使所有 Nacos 节点同时宕机,数据也不会丢失,可以在节点重启后恢复状态。

Nacos 的配置如何持久化?

  • 内嵌持久化:Nacos 默认使用内嵌的 Derby 数据库进行配置信息的持久化,这种方式适合非生产环境,因为其简单且无需额外的配置,由于 Derby 数据库本身是一个轻量级的嵌入式关系数据库,它并不适用于生产环境的高可用性要求。

  • 外部存储持久化:在生产环境中,推荐使用外部数据库(推荐 MySQL)来存储Nacos的配置数据,这是因为外部数据库通常提供了更高级的持久化特性,包括数据复制、故障转移、读写分离、备份与恢复等,这对于保证数据的安全性和服务的可用性至关重要,Nacos 提供了一个 SQL 文件,只需要运行这个 SQL 文件来初始化数据库,创建 Nacos 需要的表和结构,并修改数据库连接的相关配置即可。

Nacos 配置管理模型 – 命名空间(Namespace)、配置分组(Group)和配置集ID(Data ID)各自代表什么意思?

关于这个问题有分享一个博文,传送门如下:

Nacos 配置管理模型 – 命名空间(Namespace)、配置分组(Group)和配置集ID(Data ID)

CAP 原则

CAP 原则相信大家都很熟悉,也是面试中常见的问题,CAP 原则通常适用于分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),在分布式系统中 CAP 不可同时满足,这也就是常说的 CAP 原则。

  • 一致性(C):所有的节点都可以访问到最新的数据,所有的节点看到的数据都是一致的,这里的一致性是指强一致性。
  • 可用性(A):任何一个时候任何一个请求都可以得到正确响应,也就是说系统在任何时候都是可用的。
  • 分区容错性(P):表示某一个区域故障不会影响整个系统的使用,也就是说除非全部区域够故障,否则系统一直保持可用性。

CAP 理论经过论证,在分布式系统中,最多能够保证两点,而区域网络故障肯定会导致系统不可用,因此分布式系统必须保证分区容错性,故在分布式系统的组件选用中,只能舍弃可以用性或者一致性,也就是要么选择 CP 模式要么选择 AP 模式,注册中心推荐使用 AP 模式。

Base 理论

Base 理论是基于 CAP 理论逐步演化而来的,是CP(强一致性)和AP(强可用性)权衡的结果,Base 理论的核心思想是:既然无法做到强一致性,但每个应用都可以根据自身业务特点采用适当的方式来使系统达到最终的一致性。

  • Basically Available(基本可用):假设系统,出现了不可预知的故障,但不是不能用,只是在性能、功能少有所损失,比如响应变慢、非核心功能不能使用等,但系统还是可以使用的。
  • Soft state(软状态):允许系统中的数据存在中间状态,并且这个中间该状态不影响系统的整体可用性,允许系统在多个节点的数据副本存在一定的数据延时。
  • Eventually consistent(最终一致性):系统能够保证数据最终一定能够达到一致的状态,不会影响最终的结果。

Nacos 的 AP 模式和 CP模式

Nacos 作为分布式注册中心、配置终须组件,即支持 AP 模式,也支持 CP 模式,Nacos 默认使用的是 AP 模式,可以通过配置文件的方式让 Nacos 实现 CP 模式,但一般不这么做。

Nacos 的 AP 模式和 CP模式的体现?

阅读过 Nacos 源码或者对 Nacos 有一定了解的朋友,肯定知道在 Nacos 中有一个单词叫做 Ephemeral,这个单词在 Nacos 中非常常见,Ephemeral 直接翻译是短暂的意思,在 Nacos 中我们通常翻译为临时的,Nacos 中的两个概念:临时服务和持久化服务,如下:

  • 临时服务(Ephemeral):临时服务选择的是 AP 模式,服务实例健康检查失败后会从列表中删除,常用于服务注册发现场景。
  • 持久化服务(Persistent):持久化服务使用的 CP 模式,服务实例健康健康检查失败后会被标记成不健康,常用于 DNS 场景。

Nacos 的一致性协议?

我们知道 Nacos 有 AP 和 CP 两种模式,两种模式使用不同的协议,如下:

  • AP 模式:使用的是 Nacos 的自己实现的 distro 协议,也是 Nacos 默认的协议,也就是说 Nacos 默认是 AP 模式。
  • CP 模式:使用 raft 协议。

Nacos 中 Distro 协议的关键概念

  • Member:Nacos 集群中的每一个节点都是一个 Member,Member 是集群成员节点的意思。
  • MemberInfoReportTask:每个 Nacos 节点会定时给出自之外的其他节点进行通讯,以此来检测其他节点是否还存活。
  • DistroSyncChangeTask:Nacos 集群间数据同步使用。
  • LoadDataTask:Nacos 节刚启动时,会从其他节点拉取一次全量的数据,以此让当前节点和整个集群中的数据快速保持一致。

Nacos AP模式的工作模式?

  • Nacos 启动时候先从远程节点同步数据到本地,服务注册的时候也是同步数据到其他节点。
  • Nacos 的每个节点是平等,都可以处理写请求,也可以把数据同步集群中的其他节点。
  • 当节点收到属于该节点的写操作的服务时候,直接完成写入,如果不属于该节点,则会路由到对应的节点,完成数据写入。
  • 读取操作无需路由,因为集群中的每个节点都会同步服务状态,每个节点都有全量的的最新的数据。
  • 当某个节点发生宕机的时候,原本属于该节点服务的读写服务会转移到其他节点,来保证 Nacos 集群的可用性。

持续更新。。。。。。

欢迎提出建议及对错误的地方指出纠正。

  • 11
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一些关于Nacos面试题及答案: 1. 什么是NacosNacos是一个开源的分布式服务发现、配置管理和服务治理平台,它提供了服务注册和发现、配置管理、服务路由和流量管理等功能,是构建微服务架构的重要组成部分。 2. Nacos的主要特点有哪些? Nacos具有以下特点: - 功能丰富:Nacos提供了服务注册和发现、配置管理、服务路由和流量管理等功能,能够满足企业构建微服务架构的需求。 - 可扩展性强:Nacos支持多数据中心的部署和插件机制,可以方便地扩展和定制。 - 高可用性和可靠性:Nacos采用了去中心化的设计和Raft算法,保证了服务注册和发现、配置管理的高可用性和可靠性。 - 易于使用:Nacos提供了可视化的Web界面和开放的API接口,可以方便地进行服务注册和发现、配置管理等操作。 - 社区活跃:Nacos有一个活跃的开源社区,能够及时解决问题和提供技术支持。 3. Nacos支持哪些服务发现和注册方式? Nacos支持基于HTTP和RPC协议的服务发现和注册方式,可以使用RESTful API或Dubbo等框架进行服务发现和注册。 4. Nacos的配置管理如何实现? Nacos的配置管理通过配置中心实现,可以将应用程序所需的配置信息统一管理,并提供实时的配置变更通知功能,支持多种配置格式(如properties、XML、JSON等)。 5. Nacos的自我保护机制是什么? Nacos的自我保护机制是指,在Nacos集群中,当有大量服务实例下线或网络故障时,Nacos会开启自我保护机制,保证服务注册和发现的正常运行。 6. Nacos支持哪些配置格式? Nacos支持多种配置格式,包括properties、XML、JSON、YAML等。 7. Nacos如何实现服务路由? Nacos可以通过服务网关、DNS或API网关等方式实现服务路由。 8. Nacos如何实现流量管理? Nacos可以通过流量控制、负载均衡和熔断降级等方式实现流量管理。 9. Nacos的集群模式有哪些? Nacos的集群模式包括单机模式、集群模式和多数据中心模式。 10. Nacos和Zookeeper、Consul、Eureka服务发现和配置管理工具有什么区别? Nacos和这些工具的区别在于数据一致性的类型。Eureka是AP类型的,支持最终一致性;Zookeeper和Consul是CP类型的,支持强一致性;而Nacos支持CP AP模式,可以根据配置识别为CP模式或AP模式,默认是AP模式。 希望以上回答能够帮助你更好地理解Nacos。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Nacos 相关面试题及答案](https://blog.csdn.net/weixin_44603464/article/details/130136228)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值