Dubbo源码分析(四)—-Zookeeper注册中心

本篇Dubbo版本是2.7.3.Release. 这次是接着上次服务Export过程,其中服务提供者是怎么注册的呢? 首先ServiceBean中调用Protocol调用export过程,Protocol是调用SPI加载的机制,进行服务导出的.

Dubbo源码分析(四)----Zookeeper注册中心

由于Dubbo的SPI机制,ProtocolListenerWrapper是Protocol扩展的包转类(即是构造函数传入的是Protocol类型参数),ProtocolListenerWrapper是默认激活的,这个知识点是在前面介绍Dubbo的SPI机制详细介绍过.

Dubbo源码分析(四)----Zookeeper注册中心

这里dubbo-rpic-apijar包里META/internal下配置ProtocolFilterWrapper和ProtocolListenerWrapper是Protocol下是Protocol的包装类,这个两个会默认执行.

Dubbo源码分析(四)----Zookeeper注册中心

从图可以看到ProtocolFilterWrapper注入的是RegistryProtocol这个对象,这个是实现服务注册的核心逻辑. 这是RegistryProtocol的export方法的逻辑, 主要是调用register方法进行服务注册

Dubbo源码分析(四)----Zookeeper注册中心

这里registryFactory是SPI的扩展点,这里以zookeeper注册中心为例,实际创建的对象是ZookeeperRegistryFactory对象.然后获取registry对象是ZookeeperRegistry.接着调用register方法进行注册.

Dubbo源码分析(四)----Zookeeper注册中心

这个register方法是的ZookeeperRegistry父类FailbackRegistry的方法,

Dubbo源码分析(四)----Zookeeper注册中心

doRegister才是ZookeeperRegistry子类实现的父类的模板方法,通过zkClient去创建动态的配置, 注册的服务信息(包含服务的IP和端口以及接口类)都是在Zookeeper创建临时节点, 当服务与zkClient与zookeeper保持的心 跳后,这个注册的元信息也会从zookeeper上消失,也就是服务下线.

Dubbo源码分析(四)----Zookeeper注册中心

zkClient是默认扩展点CuratorZookeeperTransporter调用connect返回的实际对象是CuratorZookeeperClient,通过Curator这个Client向zookeeper进行操纵的.

总结

今天分析服务导出的过程,向服务注册中心注册的过程分析,本篇以zookeeper为例, 分析了注册的过程.

原文 

https://juejin.im/post/5d37c6dcf265da1bc07e7c1e

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Dubbo源码分析(四)—-Zookeeper注册中心

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址