Dubbo 并发连接底层探究

网络传输在RPC框架中所处的位置

一个RPC协议实现由 通信模块、报文编解码模块、序列化模块组成,其中通信模块就是RPC网络传输的实现。其稳定性和性能就直接影响了RPC服务的稳定和性能。如何保证传输模块的稳定和性能呢?

网络传输的实现组成

IO模型:

  1. BIO 同步阻塞
  2. NIO 同步非阻塞
  3. AIO 异步非阻塞

连接模型:

  1. 长连接
  2. 短连接

线程分类:

  1. IO线程
  2. 服务端业务线程
  3. 客户端调度线程
  4. 客户端结果exchange线程。

线程池模型:

  1. 固定数量线程池
  2. 缓存线程池
  3. 有限线程池

Dubbo 长连接实现与配置

初始连接:

引用服务|增加提供者==>获取连接===》是否获取共享连接==>创建连接客户端==》开启心跳检测状态检查定时任务===》开启连接状态检测

源码见:com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol#getClients

心跳发送:

在创建一个连接客户端同时也会创建一个心跳客户端,客户端默认基于60秒发送一次心跳来保持连接的存活,可通过 heartbeat 设置。

源码见:com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeClient#startHeatbeatTimer

断线重连:

每创建一个客户端连接都会启动一个定时任务每两秒中检测一次当前连接状态,如果断线则自动重连。

源码见:com.alibaba.dubbo.remoting.transport.AbstractClient#initConnectStatusCheckCommand

连接销毁:

基于注册中心通知,服务端断开后销毁

源码见:com.alibaba.dubbo.remoting.transport.AbstractClient#close()

猜你喜欢

转载自blog.csdn.net/weixin_41485592/article/details/81989428
今日推荐