dubbo在单连接情况的并发处理模型

      我们知道,rpc(远程过程)调用就是两个不在同一主机的进程通过网络进行相互调用通信,区分一个网络进程主要通过端口号,而一个网络连接channel主要是通过 源ip:源端口 + 目标ip:目标端口,所以大部分两个服务进行相互调用过程其实是通过单连接进行。

  当服务提供方和调用方之间发生并发请求时,服务方和调用方用同一个单连接进行通信,如何控制调用者线程和网络连接的分配,才能保证数据的有序和完整及正确性,以及通信性能?

  鉴于dubbo是高性能的分布式服务框架,不妨我们把目光放到2.7.4版本dubbo的源码上看,它是如何设计它的线程模型。

   Dubbo的底层网络通讯可以基于netty,也可以是mina,我们本次分析的是基于netty情况下dubbo单连接通信情况下的线程模型。

  我们简单讲下netty4的io线程模型:

如图下图所示,每个连接channel固定和某一个线程绑定,该channel的读写都有绑定的线程进行操作,一个io线程可以绑定多个channel;

因此可知dubbo的两个节点间单连接网络数据读写其实是单线程进行的,既然服务与调用者之前的单连接只有一个线程进行处理网络数据,那么它是则么做到服务的高性请求和响应呢?接下来我们在看看dubbo的一个请求和响应的处理过程。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值