跳至主要內容

Nacos 常见问题

码匠君SASSpring Authorization ServerDante Cloud微服务领域驱动DDDSpring BootSpring CloudSpring SecuritySpring Cloud AlibabaSpring Cloud TencentOAuth2.1NacosSkywalkingSentinelSeata大约 1 分钟

Nacos 常见问题

[1]failover switch is not found, failover00-00---000-VIPSRV_FAILOVER_SWITCH-000---00-00

将 Nacos 日志设置到 Debug 级别,在服务运行起来之后,就会发现控制台持续输出以上 Debug 信息。

说明

这不是代码 Bug,而是 Nacos 自身机制,想要详细了解请阅读 Nacos 源代码或自行百度。

这是 Nacos Client 本地缓存及故障转移机制。在 Nacos 源代码中,ServiceInfoHolder 的构造方法中,会初始化一个 FailoverReactor 类。FailoverReactor 的作用便是用来处理故障转移的。

FailoverReactor 的构造方法会拼接故障根目录:${user.home}/nacos/naming/public/failover,其中 public 也有可能是其他的自定义命名空间;

主要逻辑就是:

  • 基本操作就是读取 failover 目录,查找故障转移【开关】文件为名为“failover00-00---000-VIPSRV_FAILOVER_SWITCH-000---00-00”。

  • 如果故障转移文件不存在,则直接返回,不断输出 Debug 信息。

  • 如果故障转移文件存在,比较文件修改时间,如果已经修改,则获取故障转移文件中的内容。

  • 故障转移文件中存储了 0 和 1 标识。0 表示关闭,1 表示开启。

  • 当为开启状态时,执行线程 FailoverFileReader。

  • 解决办法

  1. 将 Nacos 日志级别调整为 INFO 级别以上。
  2. 手动在${user.home}/nacos/naming/public目录下,新建文件failover00-00---000-VIPSRV_FAILOVER_SWITCH-000---00-00