Nacos临时节点和永久节点的本质意义

Nacos 1.0.0 版本在客户端侧增加了一个ephemeral配置,默认值是True,代表当前实例是临时实例还是永久实例。
官方对此的描述是:

1
2
3
4
如果是临时实例,则不会在Nacos服务端持久化存储,需要通过上报心跳的方式进行保活,如果一段时间内没有上报心跳,则会被Nacos服务端摘除。
在被摘除后如果又开始上报心跳,则会重新将这个实例注册。
持久化实例则会持久化到Nacos服务端,此时即使注册实例的客户端进程不在,这个实例也不会从服务端删除,只会将健康状态设为不健康。
同一个服务下可以同时有临时实例和持久化实例,这意味着当这服务的所有实例进程不在时,会有部分实例从服务上摘除,剩下的实例则会保留在服务下

那具体又是什么意义呢,正常一个实例挂了就应该从注册中心上拿掉,所以是临时实例就行了。
其实不然,因为现实项目中,一个项目有个十几、二十几服务很正常,假设其中挂了一个,挂的这一个在注册中心控制台上就会消失,一般运维或者开发很难确定哪个服务没了,只能顺着调用链路排查。
如果ephemeral改为false,那如果服务挂了,不会消失,控制台上会显示不健康,一眼就能定位到有问题的服务。
所以生产环境建议修改ephemeral的配置为false。