上接dubbo源码阅读笔记--暴露服务时序,继续梳理服务调用时序,下图右面红线流程。
整理了调用时序图
分为3步,connect,decode,invoke。
连接
AllChannelHandler.connected(Channel) line: 38
HeartbeatHandler.connected(Channel) line: 47
MultiMessageHandler(AbstractChannelHandlerDelegate).connected(Channel) line: 28
NettyServer(AbstractPeer).connected(Channel) line: 105
NettyServer(AbstractServer).connected(Channel) line: 191
NettyHandler.channelConnected(ChannelHandlerContext, ChannelStateEvent) line: 70
decode
DecodeableRpcInvocation.decode(Channel, InputStream) line: 92
DecodeableRpcInvocation.decode() line: 74
DubboCodec.decodeBody(Channel, InputStream, byte[]) line: 138
DubboCodec(ExchangeCodec).decode(Channel, ChannelBuffer, int, byte[]) line: 134
DubboCodec(ExchangeCodec).decode(Channel, ChannelBuffer) line: 95
DubboCountCodec.decode(Channel, ChannelBuffer) line: 46
NettyCodecAdapter$InternalDecoder.messageReceived(ChannelHandlerContext, MessageEvent) line: 134
NettyCodecAdapter$InternalDecoder(SimpleChannelUpstreamHandler).handleUpstream(ChannelHandlerContext, ChannelEvent) line: 70
invoke
AllChannelHandler.received(Channel, Object) line: 54
HeartbeatHandler.received(Channel, Object) line: 90
MultiMessageHandler.received(Channel, Object) line: 28
NettyServer(AbstractPeer).received(Channel, Object) line: 123
NettyHandler.messageReceived(ChannelHandlerContext, MessageEvent) line: 91
NettyHandler(SimpleChannelHandler).handleUpstream(ChannelHandlerContext, ChannelEvent) line: 88
DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline$DefaultChannelHandlerContext, ChannelEvent) line: 564
DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(ChannelEvent) line: 791
Channels.fireMessageReceived(ChannelHandlerContext, Object, SocketAddress) line: 296
NettyCodecAdapter$InternalDecoder.messageReceived(ChannelHandlerContext, MessageEvent) line: 148
NettyCodecAdapter$InternalDecoder(SimpleChannelUpstreamHandler).handleUpstream(ChannelHandlerContext, ChannelEvent) line: 70
BidServiceImpl.bid(BidRequest) line: 24
Wrapper3.invokeMethod(Object, String, Class[], Object[]) line: not available
JavassistProxyFactory$1.doInvoke(T, String, Class<?>[], Object[]) line: 46
JavassistProxyFactory$1(AbstractProxyInvoker<T>).invoke(Invocation) line: 72
RegistryProtocol$InvokerDelegete<T>(InvokerWrapper<T>).invoke(Invocation) line: 53
ExceptionFilter.invoke(Invoker<?>, Invocation) line: 64
ProtocolFilterWrapper$1.invoke(Invocation) line: 91
TimeoutFilter.invoke(Invoker<?>, Invocation) line: 42
ProtocolFilterWrapper$1.invoke(Invocation) line: 91
MonitorFilter.invoke(Invoker<?>, Invocation) line: 75
ProtocolFilterWrapper$1.invoke(Invocation) line: 91
TraceFilter.invoke(Invoker<?>, Invocation) line: 78
ProtocolFilterWrapper$1.invoke(Invocation) line: 91
ContextFilter.invoke(Invoker<?>, Invocation) line: 70
ProtocolFilterWrapper$1.invoke(Invocation) line: 91
GenericFilter.invoke(Invoker<?>, Invocation) line: 132
ProtocolFilterWrapper$1.invoke(Invocation) line: 91
ClassLoaderFilter.invoke(Invoker<?>, Invocation) line: 38
ProtocolFilterWrapper$1.invoke(Invocation) line: 91
EchoFilter.invoke(Invoker<?>, Invocation) line: 38
ProtocolFilterWrapper$1.invoke(Invocation) line: 91
DubboProtocol$1.reply(ExchangeChannel, Object) line: 113 消息解析,message->invoker
HeaderExchangeHandler.handleRequest(ExchangeChannel, Request) line: 84
HeaderExchangeHandler.received(Channel, Object) line: 170
DecodeHandler.received(Channel, Object) line: 52
ChannelEventRunnable.run() line: 82