====================server=============================================
ExchangeHandlerAdapter
Exchanger
HeaderExchangeHeaderExchangeServerorg.apache.dubbo.registry.integration.RegistryProtocol#export
org.apache.dubbo.registry.integration.RegistryProtocol#doLocalExport
org.apache.dubbo.rpc.protocol.ProtocolListenerWrapper#export
org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper#export
org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol#export
org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol#openServer
org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol#createServer
org.apache.dubbo.remoting.exchange.Exchangers#bind(org.apache.dubbo.common.URL, org.apache.dubbo.remoting.exchange.ExchangeHandler)
return getExchanger(url).bind(url, handler);org.apache.dubbo.remoting.exchange.support.header.HeaderExchanger#bind
return new HeaderExchangeServer(Transporters.bind(url, new DecodeHandler(new HeaderExchangeHandler(handler))));HeaderExchangeHandler
DubboPtotocolDecodeHandler
HeaderExchangeHandlerTransporterNettyTransporter -> NettyServer============================================org.apache.dubbo.remoting.transport.dispatcher.ChannelHandlers#wrap
new MultiMessageHandler(new HeartbeatHandler(ExtensionLoader.getExtensionLoader(Dispatcher.class)
.getAdaptiveExtension().dispatch(handler, url)));AllChannelHandler ==== ExtensionLoader.getExtensionLoader(Dispatcher.class)
.getAdaptiveExtension().dispatch(handler, url) DecodeHandlerHeartbeatHandler AllChannelHandlerMultiMessageHandler
HeartbeatHandlerNettyServer MultiMessageHandlerorg.apache.dubbo.remoting.transport.AbstractServer#doOpen org.apache.dubbo.remoting.transport.netty4.NettyServer#doOpen ====================client=============================================ReferenceCountExchangeClient org.apache.dubbo.config.ReferenceConfig#get org.apache.dubbo.config.ReferenceConfig#init org.apache.dubbo.config.ReferenceConfig#createProxy org.apache.dubbo.rpc.protocol.ProtocolListenerWrapper#refer org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper#refer org.apache.dubbo.registry.integration.RegistryProtocol#refer org.apache.dubbo.registry.integration.RegistryProtocol#doRefer org.apache.dubbo.registry.zookeeper.ZookeeperRegistry#doSubscribe org.apache.dubbo.registry.support.AbstractRegistry#notify(org.apache.dubbo.common.URL, org.apache.dubbo.registry.NotifyListener, java.util.List<org.apache.dubbo.common.URL>) org.apache.dubbo.registry.integration.RegistryDirectory#notify org.apache.dubbo.registry.integration.RegistryDirectory#refreshOverrideAndInvoker org.apache.dubbo.registry.integration.RegistryDirectory#refreshInvoker org.apache.dubbo.registry.integration.RegistryDirectory#toInvokers org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper#refer org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper#buildInvokerChain org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol#refer org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol#getClients org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol#getSharedClient org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol#buildReferenceCountExchangeClientList org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol#buildReferenceCountExchangeClient org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol#initClient 心跳,断线重连 org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeClient#HeaderExchangeClient org.apache.dubbo.rpc.cluster.support.FailoverClusterInvoker#doInvoke org.apache.dubbo.rpc.protocol.InvokerWrapper#invoke org.apache.dubbo.rpc.listener.ListenerInvokerWrapper#invoke org.apache.dubbo.rpc.protocol.AbstractInvoker#invoke org.apache.dubbo.rpc.protocol.dubbo.DubboInvoker#doInvoke org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient#request(java.lang.Object, int) org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeClient#request(java.lang.Object, int) org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeChannel#request(java.lang.Object, int)