dubbo 3 ReferenceBean<T>消费者端初始化过程
来源:互联网 发布:c语言入门免费书籍 编辑:程序博客网 时间:2024/06/04 03:47
四、ReferenceBean<T>消费者端初始化过程
1、ReferenceConfig的init()
createProxy中也生成了registryUrl
invoker = refprotocol.refer(interfaceClass, urls.get(0));
同样这里会ProtocolListenerWrapper->ProtocolFilterWrapper->RegistryProtocol
2、RegistryProtocol的refer
先注册消费者信息/dubbo/interfaceName/customs/{customUrl}
然后订阅
RegistryDirectory<T> directory = new RegistryDirectory<T>(type, url);
registry.register
directory.subscribe
当服务提供端地址有变化时候,注册中心会通知订阅者,更新
RegistryDirectory的
public synchronized void notify(List<URL> urls)
->refreshInvoker->toInvokers
invoker = new InvokerDelegete<T>(protocol.refer(serviceType, url), url, providerUrl);
此时的url是从注册中心拿到的providerUrl,它的protocol为dubbo
所以会使用DubboProtocol的refer
3、DubboProtocol的refer,在这之前依然会有wrapper加上listener和filter
DubboProtocol
public <T> Invoker<T> refer(Class<T> serviceType, URL url) throws RpcException {
// create rpc invoker.
DubboInvoker<T> invoker = new DubboInvoker<T>(serviceType, url, getClients(url), invokers);
invokers.add(invoker);
return invoker;
}
其中getClients会启动客户端连接服务端,getClients还会根据配置是否使用共享连接,还是每个服务都有一个连接
4、getClients->initClient->Exchangers.connect->Transporters.connect->Client
最后就得到了NettyTransporter->NettyClient
NettyClient的doOpen()就是netty客户端连接服务端过程。
5、回到RegistryProtocol的doRefer
return cluster.join(directory);
这个cluster集群方式,可选:failover/failfast/failsafe/failback/forking
一般还会配置Mock
那么将会得到MockClusterInvoker->FailoverClusterInvoker->Directory
6、得到invoker后在ReferenceConfig的createProxy最后
// 创建服务代理,会对接口生成代理类,然后注册到spring容器中,使用时候获取到的就是代理类
return (T) proxyFactory.getProxy(invoker);
1、ReferenceConfig的init()
createProxy中也生成了registryUrl
invoker = refprotocol.refer(interfaceClass, urls.get(0));
同样这里会ProtocolListenerWrapper->ProtocolFilterWrapper->RegistryProtocol
2、RegistryProtocol的refer
先注册消费者信息/dubbo/interfaceName/customs/{customUrl}
然后订阅
RegistryDirectory<T> directory = new RegistryDirectory<T>(type, url);
registry.register
directory.subscribe
当服务提供端地址有变化时候,注册中心会通知订阅者,更新
RegistryDirectory的
public synchronized void notify(List<URL> urls)
->refreshInvoker->toInvokers
invoker = new InvokerDelegete<T>(protocol.refer(serviceType, url), url, providerUrl);
此时的url是从注册中心拿到的providerUrl,它的protocol为dubbo
所以会使用DubboProtocol的refer
3、DubboProtocol的refer,在这之前依然会有wrapper加上listener和filter
DubboProtocol
public <T> Invoker<T> refer(Class<T> serviceType, URL url) throws RpcException {
// create rpc invoker.
DubboInvoker<T> invoker = new DubboInvoker<T>(serviceType, url, getClients(url), invokers);
invokers.add(invoker);
return invoker;
}
其中getClients会启动客户端连接服务端,getClients还会根据配置是否使用共享连接,还是每个服务都有一个连接
4、getClients->initClient->Exchangers.connect->Transporters.connect->Client
最后就得到了NettyTransporter->NettyClient
NettyClient的doOpen()就是netty客户端连接服务端过程。
5、回到RegistryProtocol的doRefer
return cluster.join(directory);
这个cluster集群方式,可选:failover/failfast/failsafe/failback/forking
一般还会配置Mock
那么将会得到MockClusterInvoker->FailoverClusterInvoker->Directory
6、得到invoker后在ReferenceConfig的createProxy最后
// 创建服务代理,会对接口生成代理类,然后注册到spring容器中,使用时候获取到的就是代理类
return (T) proxyFactory.getProxy(invoker);
阅读全文
0 0
- dubbo 3 ReferenceBean<T>消费者端初始化过程
- 【知识库】--Dubbo ReferenceBean获取 -- 源码过程(254)
- 【知识库】--Dubbo ReferenceBean获取-- RegistryProtocol.Refer -- 源码过程(254)
- dubbo 服务消费者初始化
- 【知识库】--Dubbo ReferenceBean获取-- 调用RegistryDirectory.notify -- 源码过程(254)
- 【知识库】--Dubbo ReferenceBean获取 -- router路由服务 源码过程(255)
- dubbo作为消费者注册过程分析
- dubbo作为消费者注册过程分析
- dubbo 4 服务消费者到提供者过程
- dubbo源码浅析(四)-服务消费者初始化
- dubbo版本2.8.4 消费者远程调用过程
- dubbo源码学习(四)初始化过程细节:解析服务
- Dubbo消费者配置
- Dubbo 消费者启动流程
- Dubbo 接口 、提供者、消费者
- dubbo管控台不显示消费者
- dubbo中消费者配置文件
- dubbo起步搭建Spring+SpringMVC+dubbo的开发环境(3,消费者consumer工程构建)
- 各主流浏览器内核介绍
- dubbo 2标签解析 ServiceBean<T> 生产者服务暴漏过程
- Linux (centos7) 防火墙命令
- 剑指offer面试16 反转链表
- 基于C#制作的狼人游戏介绍
- dubbo 3 ReferenceBean<T>消费者端初始化过程
- HTML option排序功能
- java后台下载文件
- 【数据结构实验五】二叉树
- STM32 常用知识初探
- Django随笔记-1
- hash 分表
- ffmpeg 常见需求命令 (贴图、混音等)
- 焊接教学(入门级)