Dubbo服务消费过程
2021-08-07 16:42:18 2 举报
Dubbo服务消费过程,默认Netty通信和ZK注册
作者其他创作
大纲/内容
6.生成Response
HeaderExchangeChannel
6.2传入handler
6.3绑定handler
InvocationHandler#invoker
客户端
将Invoker转成客户端需要的接口
List
具体服务转换到Invoker
RandomLoadBalance
初始化消费
ExchangeClient远程通信客户端
UserService代理对象Proxy0
1.根据spring-produce.xml初始化
UserController#info
将Invoker转成Exporter
JavasistProxyFactory、JdkProxyFactory
JDKProxyFactory
3.3监听回调,返回提供者URL
传入Invoker
RegisterDirectory#notify
3.2向注册中心订阅服务者
AbstractProxyFactory
UserServiceImpl
线程池
ZookeeperRegistry#doRegister
Zookeeper
订阅 providers、configurators、routers 等节点数据
3.生成Invoker
ReferenceConfig
DubboProtocol#refer
ExchangeService
6.根据Invoker创建Service代理对象
传入List
Invoker
ref
3.6生成Invoker
初始化暴露
创建Invoker
ServiceConfig
DubboInvoker、InjvmInvoker、RmiInvoker、HessainInvoker、WebServiceInvoker
DubboInvoker
2.Handler#reply
2.加载注册中心信息
heartbeat
创建ZK客户端,将自己注册到ZK
DubboProtocol、InjvmProtocol、RmiProtocol、HessainProtocol、WebServiceProtocol
生产者业务处理,返回
3.1注册到注册中心
NettyServer
Directory
Protocal
HeaderExchangeServer
ServiceBean
Protocol
getUsername
FailoverClusterInvoker
DubboProtocol#export
Invoker(MockClusterInvoker)
1.接收消费者消息
唤醒用户线程
JavasistProxyFactory
4.将List生成的Invoker缓存到Direcory
AbstractProxyInvoker
注册中心URL
HeaderExchangeClient
将自己注册到客户段
DubboProtocol#getClient
3.5创建通信客户端
记录future,用于接收请求返回
生产者服务端
ServiceConfig#doExportUrlsForProtocal
4.获取Invoker
3.根据serviceKey获取对应Exporter
Exporter
启动服务器
3.暴露服务配置列表,基于单个协议进行服务暴露
获取loadBalance
ProxyFactory
DubboExporter
RegistryProtocol#refer
5.将多个Invoker转成一个Invoker,外层套一层MockClusterInvoker
生成
Invocation::InvocationHandler
DefaultFuture
Spring启动
3.4传入URL,根据URL协议调用
初始化Bean
执行Filter链最后一个Invoker
6.1创建消息处理器
UserService
ExchangeHandler(HeadExchangeHandler)
Protocal#refer
ChannelEventRunable
FailoverCluster
RegistryDirectory#subscribe
AbstractClusterInvoker
AllChannelHandler#received
ref(对外提供的实际类)
2.传入依赖的类的Class类型和URL参数
Cluster#join
NettyClient
4.代理工厂创建Invoker
消费者服务端
将远程服务转成Invoker
5.执行返回结果
1.执行export暴露服务
ZookeeperRegistry#doSubscribe
将方法和参数封装成RpcInvocation
一系列FilterInvoker
RegistryProtocol#export
ReferenceBean
6.根据host+port创建服务器
消费者调用
NettyHandler#messageReceived
0 条评论
回复 删除
下一页