Nacos会将服务的提供者分为临时实例和非临时实例。默认为临时实例。
临时实例跟eureka一样,会向注册中心报告心跳监测自己是否还活着。如果不正常了nacos会剔除临时实例。(捡来的孩子)
非临时实例,nacos会主动询问服务提供者是否还活着。这里跟eureka就不一样了。如果不正常了nacos不会剔除临时实例,会等着服务恢复正常。(亲儿子)
nacos中服务的消费者除了从nacos注册中心定时拉取服务列表,nacos注册中心还会主动推送变更的消息。这里也跟eureka不一样。
java
spring:
cloud:
nacos:
server-addr: localhost:8848
discovery:
cluster-name: chengdu
ephemeral: false # 设置为非临时实例
非临时实例,不健康了,不会被剔除:
Eureka与Nacos的共同点:
1.都支持服务注册与拉取。
2.都支持服务提供者心跳方式做健康监测。
不同点:
1.Nacos支持服务端主动监测服务提供者的状态:非临时实例采用主动监测模式。而临时实例采用心跳模式。
2.临时实例心跳不正常会被剔除,非临时实例则不会被剔除。
3.Nacos支持服务列表变更的消息推送模式,服务列表更新更及时。
4.Nacos集群默认采用AP的方式,当集群中存在非临时实例时,采用CP模式。Eureka采用AP模式。AP高可用,CP强调可靠性和一致性。