dubbo学习笔记之dubbo-registry-zookeeper<二>

 在<一>中用了spring-boot-starter-dubbo,Zookeeper作为注册中心简要的写了一个服务,看了一下在zk中的节点信息,其实还clone了dubbo的源码看看那,其中有一个模块是dubbo-registry-zookeeper,还不是很清楚dubbo项目的整体架构,就先拆出它来看看怎么做的。

150940_4GPx_2277632.png

满怀希望地打开,其实发现里面就两个类,结果发现细节好多,智商捉急!

150953_9a5w_2277632.png

   其中一个还是叫Factory的类,看名字应该和工厂方法一样的吧。看到里面有一个属性是com.alibaba.dubbo.remoting.zookeeper.ZookeeperTransporter,另一个就是创建zk注册类createRegistry(URL url),这个大概才是主角吧。

151017_shYd_2277632.png

ZookeeperRegistry继承了FailbackRegistry,FailbackRegistry继承AbstractRegistry。

151030_Rgr3_2277632.png

ZookeeperRegistry主要实现了里面的四个抽象方法,当然FailbackRegistry里面还有很多方法(包括他继承的抽象方法)。

151045_LvoY_2277632.png

点进去看看这个ZookeeperRegistry的构造方法吧,这边也是主要先连接注册中心,获取会话,还加了状态监听。

151100_WdE1_2277632.png

上面的super(url)会执行检测并且连接注册中心,这边用了一个定时任务执行器

做这个事情,还有retry方法 是写在实现的那个抽象类里面的,对多种情况作了处理,写的很长,今天是无法消化这个啦,暴露智商系列。

151123_f9Yf_2277632.png

在AbstractRegistry中对url的操作不太明白,注释是 “启动文件保存定时器”。

151131_e0zj_2277632.png

    ZookeeperRegistry中的属性虽然不多,可是你知道它继承了很多东西,这边默认端口是2181,root目录是 dubbo,zk监听和客户端,看不太明白anyservice的作用(如果看懂,后续补上)

151142_96z9_2277632.png

    ZookeeperRegistry这边可以看到doRegister与doUnregister,这个写的比较简介,这边还有对url处理的好个方法,dubbo这边使用的是zkclient,如果你看到我之前写的zookeeper之java api,你会发现那个同步异步方法用起来还是挺麻烦的,比如创建还是异步的,zkclinet是对zookeeper原生api的封装,可以省去繁琐的细节,后续写zk学习笔记再来会会它吧,并看看怎么封装的。

151208_r6zt_2277632.png

151216_Y77z_2277632.png

    还有两个方法是订阅请求和不订阅,可以看到这两个方法里面的参数是final的,点击查看谁调用了他们,结果发现是在抽象类FailbackRegistry方法中有个

subscribe(URL url, NotifyListener listener)方法调用了,可以想到在用redis注册的实现中也用了类似的套路。

ZookeeperRegistry中:

151231_URcu_2277632.png

FailbackRegistry中:

151244_v9Ng_2277632.png

这边的URL是com.alibaba.dubbo.common包中,用到太多了,看看里面是什么妖魔鬼怪,后续还要和它斗智斗勇吧。

151300_17SX_2277632.png

  能力有限,一时也看不出太多的门道,后续多看一点,是否可以多看出一点东西,就再补上吧。

     一般看不太懂的时候,我还会看一下他们写的测试代码 test,可是我点开

ZookeeperRegistryTest,发现里面基本都被坐着注释掉了,这是???for

151318_yc4b_2277632.png

 

 

 

公众号

151337_l163_2277632.png

转载于:https://my.oschina.net/u/2277632/blog/1528163

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值