Nacos 常见问题

码匠君 ... 2021-10-28 大约 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
上次编辑于: 2021年10月28日 23:24
贡献者: herodotus