Dubbo¶
收藏¶
Dubbo 如何将 Netty 的异步请求转为同步方法调用¶
-
每次请求生成唯一的
requestId,此时是调用线程; -
调用线程生成
CompletableFuture,向 Netty 的 Channel 写数据前,将CompletableFuture保存到FUTURES(这是一个 map)中,key 为requestId,同时将requestId写入请求中。然后从CompletableFuture同步获取结果; -
Netty 收到写请求后,解析到
requestId,从FUTURES获取到CompletableFuture,然后调用完成方法; -
此时调用线程就可以从
CompletableFuture中获取结果,完成同步调用过程;