微服务架构和实践Dubbo剖析源码解析

dubbo剖析:七 网络通信总结

2018-05-13  本文已影响659人  益文的圈

注:文章中使用的dubbo源码版本为2.5.4

零、文章目录

一、Dubbo的网络分层抽象

Dubbo整体设计

上图为Dubbo整体设计的分层抽象。

网络通信位于Remoting模块:

Transport网络传输层:

Exchange信息交换层:

二、Dubbo如何保证Client端与Server端的连通性

Dubbo采用双向心跳的方式检测Client端与Server端的连通性。

2.1 心跳请求的发送

在信息交换层服务端实现类HeaderExchangeServer和客户端实现类HeaderExchangeClient中包含一个 心跳定时任务HeartBeatTask

2.2 心跳请求的接收及处理

在请求接收的Handler处理链路中,包含有一个 心跳消息处理器HeartbeatHandler

2.3 心跳超时的检测及处理

在信息交换层服务端实现类HeaderExchangeServer和客户端实现类HeaderExchangeClient中包含一个 心跳定时任务HeartBeatTask

三、Dubbo编解码协议,解决TCP粘包拆包问题

Dubbo协议头

3.1 请求消息协议头说明

3.2 响应消息协议头说明

3.3 粘包拆包的解决

基本原理就是不断从TCP缓冲区中读取数据,并将新读取到的数据向后追加到 本地消息缓存 中,然后进行解码处理:

四、Dubbo的请求响应模式,如何将异步IO变为同步RPC

3.1 发起RPC调用请求的业务线程,是如何同步阻塞等待直到RPC响应返回的?

3.2 对于全双工的网络通信,在多线程并发请求响应的情况下,如果找到RPC响应Response对应的RPC请求Request?

五、Dubbo线程模型总结

Dubbo请求响应线程模型图
上一篇 下一篇

猜你喜欢

热点阅读