Nacos 注册中心细节分析

编程 / 微服务 / 2022-08-21

角色

注册中心一般有三种角色:

  • 服务提供者:启动时,向 Nacos 注册服务信息。
  • 服务消费者:定时(间隔30s)拉取服务(pull),将拉取的信息缓存在服务列表中。同时 Nacos 发现服务信息变更,会主动推送变更消息 (push)。
  • 注册中心:Nacos 。

角色关系

实例

Nacos 会将服务提供者划分为 临时实例非临时实例 ,Nacos 对这两种实例的健康监测是不一样的。默认情况下:所有的实例都是临时实例。推荐临时实例,非临时实例对服务器压力大。

  • 临时实例:采用心跳监测。如果服务不存在,从列表中删除。
  • 非临时实例:Nacos 发起请求检测。如果服务不存在,并不会从列表中删除,而是标记不健康,等待恢复健康。

配置非临时实例,通过更改项目配置

spring:  
  cloud:  
    nacos:  
      server-addr: localhost:8848  
      discovery:  
        cluster-name: GZ  
        namespace: 62c75d23-5839-45db-bec9-8747fdcef332 # 命名空间ID
        ephemeral: false # 非临时实例

查看是否临时实例

对比 Eureka

共同点

  • 都支持服务发现
  • 都支持服务者提供心跳方式做健康监测

不同点

  • Nacos 支持服务端主动检测提供者状态:临时模式实例采用心跳模式,非临时模式采用主动检测模式
  • Nacos 临时实例心跳不正常会被剔除,非临时实例不会被剔除
  • Nacos 支持服务列表变更消息推送,服务列表更新及时
  • Nacos 集群默认采用 AP 方式,当集群中存在非临时实例时,采用 CP 模式;Eureka 采用 AP 模式