Dubbo服务调用全流程
2021-08-13 16:10:30 11 举报
Dubbo服务调用全流程
作者其他创作
大纲/内容
服务路由(脚本路由和条件路由等)
End
通过注册中心引用
将URL协议头改为injvm并且将IP设为localhost
否
将配置封装成URL
是
是否本地引用
将服务消费组注册到ZK上成为临时节点
本地暴露
referecnceBean被注入的时候进行服务引用
根据IP和端口号创建Netty客户端进行连接对应的服务
将配置封装成URL(URL是这整个dubbo调用的载体)
创建AbstractInvoker(invoker中有整个URL和接口信息)
创建DubboInvoker封装Netty客户端(DubboInvoker中封装了远程通信的细节)
执行Filter过滤链(如MoniterFilter)
是否服务降级MOCK
服务调用流程
服务端拿到Request派发给业务线程池进行反序列化等操作
初始化时进行服务引用
1
将InjvmExporter封装进ExporterMap
URL中scope参数是否为local
从Exportmap中获取到AbstractInvoker进行反射调用具体的方法
将URL作为Zk的节点注册临时节点
负载均衡选择一个Invoker进行调用
2
注册中心暴露(根据不同注册中心暴露)
是否URL直连
封装Request通过Neety进行调用
服务暴露流程
执行MockClusterInvoker的逻辑进行调用
拿到Request进行处理.获取到serviceKey
服务端拿到Request分发给业务线程池进行解码反序列化等操作
根据不同协议进行暴露
在ServiceBean里初始化的时候进行服务暴露
服务引用流程
通过Cluster将RegistryDirectory中多个invoker合并成单个MockClusterInvoker
0 条评论
下一页