Dubbo Consumer Invocation Chain

Posted by kyle on July 17, 2019
ReferenceAnnotationBeanPostProcessor#invoke
    |
    |
    V
InvokerInvocationHandler#invoke
    |
    |----> RpcInvocation
    V
MockClusterInvoker#invoke
    |
    | no mock
    V
AbstractClusterInvoker#invoke
    |
    |----> list invokers ----> AbstractClusterInvoker#initLoadBalance ----> ExtensionLoader#getExtensionLoader ----> ExtensionLoader#createExtension
    |
    |----> RpcUtils#attachInvocationIdIfAsync
    V
FailoverClusterInvoker#doInvoke
    |
    |----> retry loop
    V
InvokerWrapper#invoke
    |
    |
    V
ListenerInvokerWrapper#invoke
    |
    |
    V
ProtocolFilterWrapper.CallbackRegistrationInvoker#invoke
    |
    |
    V
ProtocolFilterWrapper#invoke
    |
    |
    V
ConsumerContextFilter#invoke
    |
    |----> setLocalAddress ----> setRemoteAddress ----> RpcContext#removeServerContext
    V
AsyncToSyncInvoker#invoke
    |
    |
    V
AbstractInvoker#invoke
    |
    |
    V
DubboInvoker#doInvoke
    |
    |----> new AsyncRpcResult(inv) ----> ExchangeClient#request ----> ReferenceCountExchangeClient#request ----> HeaderExchangeClient#request ----> HeaderExchangeChannel#request ----> AbstractPeer#send ----> AbstractClient#send ----> AbstractClient#getChannel
    V
NettyChannel#send: 通过Netty传送RpcInvocation对象