dubbo服务引入
2022-06-30 15:42:30 5 举报
dubbo服务引入
作者其他创作
大纲/内容
初始化代理类ref
单个注册中心
调⽤cluster.join(directory)得到⼀个invoker 返回invoker(如果消费者引⼊了多个group中的服务,那么这⾥返回的是new MergeableClusterInvoker<T>(directory);,否则返回的是new FailoverClusterInvoker<T> (directory);) 但是,上⾯返回的两个Invoker都会被MockClusterInvoker包装,所以最终返回的是 MockClusterInvoker。
REF_PROTOCOL.refer如何得到invoker
参考链接:https://www.yuque.com/books/share/f2394ae6-381b-4f44-819e-c231b39c1497/dm83cc(密码kyys)https://mp.weixin.qq.com/s/9oDy1OPcfDaEhKD4eNUdOA
多个注册中心
构造路由链放到RegistryDirectory中
ReferenceBean.getObject
构建RegistryDirectory
将消费者url注册到注册中心
RegistryDirectory订阅注册中心几个路径的变化RegistryDirectory.subscribe
ReferenceConfig.createProxy
DubboProtocol.refer(会调到父类的AbstractProtocol.refer)
拿到了Provider的信息之后就可以通过监听触发 DubboProtocol# refer 了(具体调用哪个 protocol 还是得看 URL的协议的,我们这里是 dubbo 协议)
根据注册中心url拿到注册中心实现,比如ZookeeperRegistry
检查并设置配置信息到ReferenceConfig中
REF_PROTOCOL.refer得到invoker
判断是否可以font color=\"#f44336\
org.apache.dubbo.rpc.cluster.Cluster.join得到Invoker
ReferenceConfig.get
服务引入的时候是在spring容器启动的时候实例化某个类的时候会解析带@Reference注解的属性,这个时候才去执行服务引入
构建dubboInvoker的时候会通过DubboProtocol#getClients构建好ExchangeClient数组放到dubboInvoker中(用来客户端向服务的发送数据用的,底层依赖Netty),最终返回 HeaderExchangeClient里面封装的是 NettyClient
RegistryProtocol.doRefer
DubboProtocol.protocolBindingRefer会返回DubboInvoker
将DubboInvoker包装一层为AsyncToSyncInvoker返回(异步改同步,因为dubboInvoker里是completableFuture异步获取结果的,AsyncToSyncInvoker里加了get方法阻塞住直到有结果)
PROXY_FACTORY.getProxy(invoker)获取到引用代理对象ref
ReferenceConfig.init
远程引用
获取所有注册中心地址,遍历所有注册中心,将引入服务的参数拼接在注册中心的URL后面
服务目录需要订阅的几个路径: 1、当前所引入的服务的消费应用目录:/dubbo/config/dubbo/dubbo-demo-consumer-application.configurators2、当前所引入的服务的动态配置目录:/dubbo/config/dubbo/org.apache.dubbo.demo.DemoService:1.1.1:g1.configurators3、当前所引入的服务的提供者目录:/dubbo/org.apache.dubbo.demo.DemoService/providers4、 当前所引入的服务的老版本动态配置目录:/dubbo/org.apache.dubbo.demo.DemoService/configurators5、当前所引入的服务的老版本路由器目录:/dubbo/org.apache.dubbo.demo.DemoService/routers
ReferenceConfig.checkAndUpdateSubConfigs
RegistryProtocol.refer
遍历注册中心URL,通过每个URL经过REF_PROTOCOL.refer得到多个invoker,经过 CLUSTER.join合并为一个invoker(默认是FailoverCluster)
0 条评论
下一页