Dubbo源码阅读之 服务端和客户端处理链

【 DubboProtocolTest.java ====>> 服务器 ===>> 处理器职责链】
1. 职责链:NettyHandler --> NettyServer --> MultiMessageHandler --> HeartbeatHandler 
                --> AllChannelHandler --> DecoderHandler --> HeaderExChangeHandler 
                --> requestHandler=new ExchangeHandlerAdapter
2. 处理器:NettyHandler
                        ======>>> 维护客户端与服务端建立连接的 channel,通过ConcurrentMap来做到的。
3. 处理器:NettyServer
                        ======>>> 啥事都没有做,直接传递给下一个消息处理器。
4. 处理器:MultiMessageHandler
                        ======>>> 在接受消息的方法中,判断了当前消息是否是 MultiMessage 也就是 message instanceof MultiMessage。
5. 处理器:HeartbeatHandler
                        ======>>> 更新当前处理器的读写的时间戳。
                        ======>>> 在接受消息的方法中,判断当前消息是否是心跳消息,如果是心跳请求,就查看当前消息是否要响应,如果需要响应就发送一个心跳响应。
6. 处理器:AllChannelHandler
                        ======>>> 启动一个Task,提交到一个无界的线程池。
7. 处理器:DecoderHandler
                        ======>>> 判断该消息是否实现了接口Decodeable,如果实现了就调用方法 decode()。
8. 处理器:HeaderExChangeHandler
                        ======>>> receive方法中会调用发送方法,给客户端返回结果值。
9. 处理器:requestHandler
                        ======>>> 接收消息,判断消息是否是 Invocation。
                        ======>>> 根据Key获取的Invoker,就是目标实例/方法。

                        ======>>> 调用目标方法。



【 DubboProtocolTest.java ====>> 客户端器 ===>> 处理器职责链】
1. 职责链:NettyHandler --> NettyClient --> MultiMessageHandler --> HeartbeatHandler 
                --> AllChannelHandler --> DecoderHandler --> HeaderExChangeHandler 
                --> requestHandler=new ExchangeHandlerAdapter
2. 处理器:NettyHandler
                        ======>>> 维护客户端与服务端建立连接的 channel,通过ConcurrentMap来做到的。
3. 处理器:NettyServer
                        ======>>> 啥事都没有做,直接传递给下一个消息处理器。
4. 处理器:MultiMessageHandler
                        ======>>> 在接受消息的方法中,判断了当前消息是否是 MultiMessage 也就是 message instanceof MultiMessage。
5. 处理器:HeartbeatHandler
                        ======>>> 更新当前处理器的读写的时间戳。
                        ======>>> 在接受消息的方法中,判断当前消息是否是心跳消息,如果是心跳请求,就查看当前消息是否要响应,如果需要响应就发送一个心跳响应。
6. 处理器:AllChannelHandler
                        ======>>> 启动一个Task,提交到一个无界的线程池。
7. 处理器:DecoderHandler
                        ======>>> 判断该消息是否实现了接口Decodeable,如果实现了就调用方法 decode()。
8. 处理器:HeaderExChangeHandler
                        ======>>> receive方法中会调用发送方法,给服务器发送响应
9. 处理器:requestHandler
                        ======>>> 接收消息,判断消息是否是 Invocation。
                        ======>>> 根据Key获取的Invoker,就是目标实例/方法。
                        ======>>> 调用目标方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值