dubbo 协议探秘及看Netty处理数据包,揭网络传输原理

妖狐艹你老母 2023-01-09 15:31 72阅读 0赞

目录

1:先说结论

相关文档

2: 项目实践


在dubbo中用netty做网络通信,突然想到避免不了数据的解决粘包问题,此次记录研究下ali怎么做的,具体查看源码本文主要记录结论

1:先说结论

1:通过dubbo协议的设计,我们可以知道dubbo分为消息头和消息体,消息头里面有整个消息体的大小。dubbo采取消息头存放消息body大小进行标识

2:完整地消息头16个字节,所以如果此次信息包大于等于16字节,说明请求头是完整的。

3:如果消息 请求头+消息体长度 是否 大于此次消息包的长度,如果大于的话,说明此次的消息不是完整的一个消息,也意味着进行拆包了,直接返回,等待其它信息

4:正常解析消息头的后,在Exchanger的解析,如果看到消息体不满足即:当消息不完整的时候,返回了一个DecodeResult.NEED_MORE_INPUT;详细处理逻辑:首先把接收的message,写入到全局变量buffer里面,然后使用message指向buffer。通过message.readable()这个判断message是否完全处理完,从而进行循环处理。如果完全处理完了整个buffer,就清空,否则buffer等于剩下未处理的部分消息。

详情:

那么这个dubbo协议长什么样呢,在我们眼中的http、tcp协议的包体应该都历历在目。大约是header + body,当然这个dubbo也不失众人所望,仍是如此结构
在这里插入图片描述

详情linkhttps://blog.csdn.net/u013076044/article/details/84575235

由于本篇文章是对服务器和客户端相互传输过程中的粘包拆包问题,所以这里只对Dubbo协议的decode过程进行解析。

在dubbo中,Exchanger扮演着把消息体解析为request和response的角色。主要包在Exchanger两个文件中

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMyNDQ3MzIx_size_16_color_FFFFFF_t_70

相关文档

https://blog.csdn.net/u013076044/article/details/84575235 dubbo 协议探秘
https://wuhulala.blog.csdn.net/article/details/89279699 Dubbo 处理TCP粘包拆包


2: 项目实践

1:

发表评论

表情:
评论列表 (有 0 条评论,72人围观)

还没有评论,来说两句吧...

相关阅读