背景
我们的springCloud项目,使用的nacos作为服务中心。但是其中有一个服务,总是出现频繁掉线的问题。后来通过查询博客。采用。先停nacos,再删掉data目录下的protocol文件夹,最后重启需要注册的服务进行的解决,今天就来总结一下,这个问题涉及到的知识点。
原因分析
解决过程设计到的知识
- nacos的data目录作用。
nacos的data目录是用来存储nacos服务的数据的,包括配置信息,服务信息等。默认的情况下,data目录位于naocs安装目录下的。 - nacos data目下的protocol目录
nacos的data目录下的protocol目录是用来存储。服务中心的协议信息的,它记录了服务注册中心所使用的协议类型,版本号等等。以便于服务提供者和服务消费者之间进行通信。 - nacos ip混乱问题
nacos的ip混乱。可能是因为网络配置不正确,或者服务注册不规范导致的。可以通过检查网络配置和服务注册情况来解决这个问题。我们这里使用的解决问题是注册的服务全部删掉,然后重新注册解决的。
nacos服务注册发现原理
- 服务注册
Nacos Client 通过发送REST请求向Nacos Server注册自己的服务。提供自己的 ip地址、端口等信息。 - 服务心跳
服务注册之后。Nacos Client 会默认每5s向Nacos Server 发送一次心跳。以防止服务被剔除。 - 服务发现
服务消费者Nacos Client ,在调用服务提供者服务时,会发送一个REST请求给,Nacos Server ,获取Nacos Server上注册的服务清单。并且缓存在 本地。同时会在Nacos Client 本地开启一个定时任务,定时拉取服务端最新注册表信息,更新到本地缓存。 - 服务健康检测
Nacos Server 开启一个定时任务,检查注册服务实例的健康情况。超过15s没有收到客户端心跳的实例,会将它的 healthy数据设置为(false),如果某个实例超过30s没有收到心跳,直接剔除该实例(如果服务恢复的话,)