在前两节中写到,dubbo连接zookeeper是通过下面代码来实现的:
final Registry registry = getRegistry(originInvoker);
进入 RegistryFactory$Adpative的getRegistry方法:
通过spi获得ZookeeperRegistryFactory 的一个对象,进入ZookeeperRegistryFactory 的父类AbstractRegistryFactory的getRegistry方法:
进入createRegistry(url)方法:
zookeeperTransporter是一个adaptive类,进入该类的connect方法:
这里的spi的name是zkclient,进入ZkclientZookeeperTransporter的connect方法:
以上就是dubbo连接zookeeper的源码。下面分析如何在zookeeper中创建节点。
在RegistryProtocol的export方法中,创建节点的代码如下:
registry.register(registedProviderUrl);
进入该方法:
进入doRegister方法:
这就是创建节点的代码。创建的节点如下: