假设 zk 上的 dubbo 注册信息根路径是 /dubbo. 上面有接口级的例如
/dubbo/com.example.SomeInterface
还有应用级的, 例如
/dubbo/SomeService
- 127.0.0.1:20880
当 org.apache.dubbo.registry.zookeeper.ZookeeperRegistry#doSubscribe 调用的时候, 如果走到了 ANY_VALUE.equals(url.getServiceInterface()) 的分支, 会把底下所有子节点都 subscribe.
即上面例子的 /dubbo/com.example.SomeInterface 和 /dubbo/SomeService 都 subscribe 了. 这两个子节点会触发
for (String path : toCategoriesPath(url)) {
...
zkClient.create(path, false);
...
}
于是应用级的接口就会变成这样
/dubbo/SomeService
- 127.0.0.1:20880
- configurators
- consumers
- providers
- routers
应用级节点里面的每个子节点(例子中的127.0.0.1:20880)的内容应该是可以序列化到 ServiceInstance 的 json. 但是 configurators, consumers, providers, routers 这几个自动创建的不是 json. 导致解析错误