角色
注册中心一般有三种角色:
- 服务提供者:启动时,向 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 模式

