我有两个nacos集群,第一个集群中有三个nacos实例,第二个集群中有一个。这两个集群都在我的电脑上部署,使用同一个数据库
我将服务提供者注册到第一个集群中,为什么在第二个集群中查看不到。
当使用了nacos-sync将第一个集群中的这个服务提供者同步到第二个集群以后,才可以在第二个集群中查看到注册的服务
但是数据库的内容貌似没有任何变化,是因为nacos将实例信息存储在了内存中吗?底层的原理是什么呢?
引用 皆我百晓生 小程序回复内容作答:
Nacos服务注册的信息默认是存储在内存中的,而不是直接存储在数据库中。Nacos使用了一种基于RAFT协议的分布式一致性算法来保证数据的一致性和可靠性。当你将服务提供者注册到第一个集群中时,它会将注册信息保存在内存中的实例列表中。当你使用nacos-sync将第一个集群中的服务提供者同步到第二个集群时,它会将内存中的实例列表复制到第二个集群的内存中,从而使第二个集群中也能查看到注册的服务。
需要注意的是,Nacos的内存存储是有限的,如果内存不足或者重启了Nacos实例,之前注册的服务信息可能会丢失。为了保证数据的持久性,你可以配置Nacos使用数据库作为持久化存储,这样即使重启了Nacos实例,之前注册的服务信息也能够恢复。你可以在Nacos的配置文件中进行相应的配置。
总结一下,Nacos将服务注册信息存储在内存中,使用RAFT协议保证数据的一致性和可靠性。你可以选择将数据持久化到数据库中以保证数据的持久性。