dubbo源码解析-zookeeper连接

1.dubbo一般选择什么注册中心,还有别的选择吗?

zookeeper的java客户端你使用过哪些?

本篇重要的内容

getRegistry(originInvoker);

通过时序图理下思路:

源码中封装的很好的,我们有时很难看到实用的价值,其中在3步骤内隐藏了很多内容。

红框中具体会调用哪个子类,这就需要看看继承体系图

再来个ZookeeperRegistry的继承体系图

   

2.dubbo中zookeeper做注册中心,如果注册中心集群都挂掉,那发布者和订阅者还能通信吗?

    可以的,启动dubbo时,消费者会从zk拉取注册的生产者的地址接口等数据,缓存在本地。每次调用时,按照本地存储的地址进行调用,但是在注册中心全部挂掉后增加新的提供者,则不能被消费者发现

健状性

  1. 监控中心宕掉不影响使用,只是丢失部分采样数据
  2. 数据库宕掉后,注册中心仍能通过缓存提供服务列表查询,但不能注册新服务
  3. 注册中心对等集群,任意一台宕掉后,将自动切换到另一台
  4. 注册中心全部宕掉后,服务提供者和服务消费者仍能通过本地缓存通讯
  5. 服务提供者无状态,任意一台宕掉后,不影响使用
  6. 服务提供者全部宕掉后,服务消费者应用将无法使用,并无限次重连等待服务提供者恢复

 

3.项目中有使用过多线程吗?有的话讲讲你在哪里用到了多线程?

       建立线程池,定时的检测并连接注册中心,如果失败了就尝试重连.其实也就是一个定时任务执行器.定时任务执行器这种需求在项目中还是很常见的,你可以参考这个例子,把你们的定时任务场景和这里的多线程用法套在一起,云淡风轻的这么一回答,还不是棒棒哒?

4.zookeeper的java客户端你使用过哪些?

zookeeperTransporter的继承体系图

zookeeperTransporter的类图

    从上述图中可以看出zookeeper是支持ZkClient和Curator两种java客户端,同时看到@SPI(“zkclient”)是不是很亲切,意思是默认使用Zkclient的客户端。

接着往下看:

下面的代码就是Zkclient的api,主要进行一些监听和处理。

终于到达return registry,

写在末尾

猜你喜欢

转载自blog.csdn.net/z15732621582/article/details/81062777