/services节点创建的时机,总的来说是在创建注册中心的时候(用于服务注册和发现),org.apache.dubbo.registry.client.ServiceDiscoveryRegistryFactory#createRegistry,我们这里是zookeeper为注册中心,所以最终是创建ZookeeperServiceDiscovery实例的时候,构造方法里面,org.apache.dubbo.registry.zookeeper.ZookeeperServiceDiscovery#ZookeeperServiceDiscovery,最终是这行代码赋值services: this.rootPath = getRootPath(registryURL); ,这个枚举类CuratorFrameworkParams的一个枚举值:ROOT_PATH,然后将这个值最终传给了ServiceDiscoveryImpl的basePath属性。因此最终注册 /user-center这个服务的时候,即调用org.apache.curator.x.discovery.details.ServiceDiscoveryImpl#internalRegisterService这个方法,就是通过调用pathForInstance()的内部方法pathForName()将 /services和/user-center 合在一起