Dubbo 2.7.13
consumer
ReferenceAnnotationBeanPostProcessor
1 |
|
发送请求
同步、异步或Future之stack,异步不需要等待应答,直接应答null(客户端通过RpcContext.getContext().getCompletableFuture()获得结果)
1 |
|
oneway之stack,不需要等待应答,直接构造空的应答
1 |
|
接收应答
同步之stack,请求线程从queue里面获取ChannelEventRunnable并执行,然后获得返回结果
1 |
|
Netty接收(NettyClientWorker-1-1)应答(同步),构建ChannelEventRunnable,提交给线程池(ThreadlessExecutor,其实是请求线程)处理,其实是放到queue,即结束。
1 |
|
Netty接收(NettyClientWorker-1-1)应答(异步或Future),构建ChannelEventRunnable,提交给Dubbo线程池(DubboClientHandler-192.168.0.134:20880-thread-*)中处理,即结束。
1 |
|
AsyncToSyncInvoker.java
1 |
|
AbstractInvoker.java
1 |
|
DubboInvoker.java
1 |
|
ThreadlessExecutor.java
1 |
|
RpcUtils.java
1 |
|
DefaultFuture.java
1 |
|
AsyncRpcResult.java
1 |
|
AppResponse.java
1 |
|
NettyClientHandler.java
创建DubboClientHandler线程池
用于应答处理,接管IO线程后续的任务。
默认线程池是CachedThreadPool,可以通过dubbo.consumer.threadpool
自定义
1 |
|
provider
Netty接收请求
由Netty的IO线程池(NettyServerWorker-3-2)处理,构建ChannelEventRunnable,提交由Dubbo线程池执行
1 |
|
Dubbo线程池业务处理
DubboServerHandler-192.168.1.134:20880-thread-2
处理请求
1 |
|
应答响应
1 |
|
创建DubboServerHandler线程池
默认线程池是FixedThreadPool,可以通过dubbo.protocol.threadpool
自定义
1 |
|