转载:https://blog.csdn.net/u013160932/article/details/79337292
暴露服务的过程中,会涉及到两个Protocol
- DubboProtocol主要是做网络通信相关初始化
- RegistryProtocol主要是做zk的注册和订阅相关
执行到export到时候,会判断本地暴露还是远程暴露。
本地注册会走DubboProtocol的export方法,里面会调用openServer()启动NETTY。
远程注册会走RegistryProtocol的export方法,里面的doLocalExporter会走进DubboProtocl里面获取export,然后再注册注册中心。
注册中心的ZookeeperRegistry有两个父类,所以ZookeeperRegistry会先调用父类的构造方法,这个过程主要做了几件事:
- 加载服务缓存文件(AbstractRegistry)
- 异步(默认)更新缓存文件(AbstractRegistry)
- 定时重试失败的动作:注册失败,取消注册失败,订阅失败,取消订阅失败,通知失败(FailbackRegistry)
- 初始化zk通信相关(ZookeeperRegistry)