# 临时实例
临时实例与持久实例的实例存储的位置与健康检测机制是不同的。
临时实例:默认情况。服务实例仅会注册在Nacos内存,不会持久化到 Nacos 磁盘。其健康检测机制为Client模式,即Client主动向Server上报其健康状态。
默认心跳间隔为5秒。在15秒内Server未收到Client心跳,则会将其标记为“不健康”状态;在30秒内若收到了Client心跳,则重新恢复“健康”状态,否则该实例将从Server端内存清除。
# 持久实例
持久实例:服务实例不仅会注册到 Nacos 内存,同时也会被持久化到 Nacos 磁盘。
其健康检测机制为Server模式,即Server会主动去检测Client的健康状态,默认每20秒检测一次。
健康检测失败后服务实例会被标记为“不健康”状态,但不会被清除,因为其是持久化在磁盘的。
# 注册为持久实例
配置
spring:
cloud:
nacos:
discovery:
server-addr: localhost:8848
# 开启持久实例
ephemeral: false
application:
name: provider-8081
如果一开始的服务,注册为临时实例,那么在配置为持久实例会出现错误
com.alibaba.nacos.api.exception.NacosException: caused: errCode: 400, errMsg: Current service DEFAULT_GROUP@@provider-8081 is ephemeral service, can't register persistent instance. ;
解决办法
- 更改application.name
spring:
cloud:
nacos:
discovery:
server-addr: localhost:8848
# 开启持久实例
ephemeral: false
application:
name: provider2-8081
- 在本地文件中,找到服务的文件(win),将其删除 C:\Users\GaoLiang\nacos\naming\public
# 删除持久实例
一旦将服务改为持久实例,通过 Nacos 可视化页面的删除按钮,是无法删除的,需要通过提供的 api 才能删除,需要先注销,才能删除 (opens new window)
注销调用示例
http://124.222.183.73:8848/nacos/v1/ns/instance?serviceName=provider-8081&ip=124.222.183.73&port=8848