Nacos 常见问题
2025年1月4日大约 1 分钟SASSpring Authorization ServerDante Cloud微服务领域驱动DDDSpring BootSpring CloudSpring SecuritySpring Cloud AlibabaSpring Cloud TencentOAuth2.1NacosSkywalkingSentinelSeata
[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。
解决办法
- 将 Nacos 日志级别调整为 INFO 级别以上。
- 手动在
${user.home}/nacos/naming/public
目录下,新建文件failover00-00---000-VIPSRV_FAILOVER_SWITCH-000---00-00
。