1.dubbo一般选择什么注册中心,还有别的选择吗?
zookeeper的java客户端你使用过哪些?
本篇重要的内容
getRegistry(originInvoker);
通过时序图理下思路:
源码中封装的很好的,我们有时很难看到实用的价值,其中在3步骤内隐藏了很多内容。
红框中具体会调用哪个子类,这就需要看看继承体系图
再来个ZookeeperRegistry的继承体系图
2.dubbo中zookeeper做注册中心,如果注册中心集群都挂掉,那发布者和订阅者还能通信吗?
可以的,启动dubbo时,消费者会从zk拉取注册的生产者的地址接口等数据,缓存在本地。每次调用时,按照本地存储的地址进行调用,但是在注册中心全部挂掉后增加新的提供者,则不能被消费者发现
健状性
|
3.项目中有使用过多线程吗?有的话讲讲你在哪里用到了多线程?
建立线程池,定时的检测并连接注册中心,如果失败了就尝试重连.其实也就是一个定时任务执行器
.定时任务执行器
这种需求在项目中还是很常见的,你可以参考这个例子,把你们的定时任务场景和这里的多线程用法套在一起,云淡风轻的这么一回答,还不是棒棒哒?
4.zookeeper的java客户端你使用过哪些?
zookeeperTransporter的继承体系图
zookeeperTransporter的类图
从上述图中可以看出zookeeper是支持ZkClient和Curator两种java客户端,同时看到@SPI(“zkclient”)是不是很亲切,意思是默认使用Zkclient的客户端。
接着往下看:
下面的代码就是Zkclient的api,主要进行一些监听和处理。
终于到达return registry
,