抄底dubbo底层的数据包格式

11 dubbo源码学习_dubbo协议通信 dubbo在通信上也支持非常多的网络协议,而dubbo协议属于dubbo框架自研,整体协议也比较有代表性,采用定长协议头+变长协议休的形式; 阅读详情

 

先来看看一段dubbo调用代码:

  ProviderdemoService= (Provider) context.getBean("demoService1");           
  Test t=new  Test();
  t.s="hello world";
  t.n=1111;
  t.l=2222222222l;
  String message = demoService.build(t);

  dubbo框架底层编码是在DubboCodec的
  @Override
   protected void encodeRequestData(Channel channel, ObjectOutput out,Object data) throws IOException {
        RpcInvocation inv = (RpcInvocation) data; 
        out.writeUTF(inv.getAttachment(Constants.DUBBO_VERSION_KEY,DUBBO_VERSION));
        out.writeUTF(inv.getAttachment(Constants.PATH_KEY));
        out.writeUTF(inv.getAttachment(Constants.VERSION_KEY)); 

        out.writeUTF(inv.getMethodName());
        out.writeUTF(ReflectUtils.getDesc(inv.getParameterTypes()));
        Object[] args = inv.getArguments();
        if (args != null)
            for (inti = 0; i < args.length; i++) {
                out.writeObject(encodeInvocationArgument(channel, inv, i));
            }
        out.writeObject(inv.getAttachments());
   }

Debug下inv的参数看看

RpcInvocation [methodName=build, parameterTypes=[classcom.test.impl.Test], arguments=[com.test.impl.Test@7b0fae4e],attachments={path=com.test.Provider, interface=com.test.Provider,version=0.0.0, timeout=5000}]

包数据=dubbo版本号+接口名称+接口版本号+方法名+参数类型+参数值+ attachments 

通过网络抓包,左边的是二进制数据,右边是抓包工具解析出来的数据,windows抓包工具使用wireshark,linux使用tcpdump命令


字符串 “com.test.Provider”用二进制是怎么表示的?dubbo支持多种编解码方式,默认是Hessian2编解码,那就要看Hessian2ObjectOutput.writeUTF的实现。

大概逻辑如下:

String类型的byte编码=length(int类型)+String转为byte

com.test.Provider的长度为17,转为十六进制是11,

‘c’转为byte为十六进制53,同样其他字符逐个转为byte排在后面 

11  63 6f  6d  2e  74  65  73  74  2e  50  72  6f  76  69  64  65  72

关于Dubbo传输协议与上传文件的坑 关于Dubbo传输协议与上传文件的坑 1.Dubbo传输协议 Dubbo协议 Hessian协议 HTTP协议 RMI协议 WebService协议 Thrift协议 Memcached协议 Redis协议 2.主要说一下Dubbo协议和Hessian协议的适用情况 Dubbo协议采用单一长连接和NIO异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况 ... 阅读详情

相关推荐

Cloudflare 5秒盾破解实战:Python补环境框架下的13次请求全解析

本文深入解析Cloudflare 5秒盾(5-second challenge)的工作原理,并提供基于Python环境的自动化应对策略。通过13次请求流程分解、动态脚本处理技术和环境指纹模拟,帮助开发者有效绕过这一复杂的人机验证机制,提升自动化工作效率。

weixin_30772105的博客 181

dubbo反序列化问题 Unable to find class: path

最近线上环境和测试环境总是时不时报找不到dubbo服务的错,或者是路径错误。 java.io.IOException:com.esotericsoftware.kryo.KryoException:Unabletofindclass:path atcom.alibaba.dubbo.common.serialize.support.kryo.KryoObjectInput.readObject(KryoObjectInput.java:127) atcom.alibaba.d...

rainbow_lasia的博客 2782

JQ8900语音播报模块在RT-Thread系统下的驱动移植与测试详解

本文详细讲解了如何在RT-Thread嵌入式操作系统中,为JQ8900语音播报模块进行驱动移植与功能测试。内容涵盖从获取驱动代码、配置Kconfig工程、编译烧录到核心代码解析的完整流程,并提供了基于串口通信的上电测试与问题排查方法,帮助开发者快速掌握在RT-Thread系统下集成外部模块的核心技能。

weixin_35677363的博客 593

dubbo 小错误 记录一下

HTTP Status 500 - Request processing failed; nested exception is com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method findList in the service com.pinyougou.seckill.service.SeckillGoodsServi...

qq_43141818的博客 552

自动驾驶仿真:python和carsim联合仿真案例

carsim内部有许多相关联合仿真的demo,simulink、labview等等都有涉及,这里简单介绍下python和carsim联合仿真的方法,虽然carsim官方有个Steer_Control.py相关的案例,但是感觉比较冗余,这里抽出重点部分和大家交流探讨下。提示:以下是本篇文章正文内容,下面案例可供参考1、这里关于solvers的细节其实都没说,因为里面确实也没什么内容好讲的,本质就是调用carsim.dll,如果你需要更多的函数解析其实可以看vs_api.h,路径在,具体内容如下图所示。

zataji的博客 9064

分辨率太小 / Retina 模糊 / 全屏异常:一篇解决 VMware Fusion + Kali 显示问题(Xfce & GNOME 通用)

本文提供了在Mac(尤其是Retina屏)上运行Kali Linux时常见显示问题的完整解决方案。主要解决三类问题:分辨率太小、Retina屏模糊和全屏异常。核心思路是先安装open-vm-tools-desktop并重启,这是90%问题的根源。然后根据不同问题分别处理:调整DPI/Scale解决字体大小,避免双重缩放导致的模糊,以及通过窗口拉伸和重启解决全屏异常。文章还给出了针对Xfce和GNOME的最佳配置建议,并强调调试完成后应创建快照以便快速恢复。最后提供了速查表,方便用户快速参考关键步骤。

致力于分享在各类技术领域的学习与实践经验,涵盖编程、虚拟化、开源工具、网络安全等。 876

Dubbo源码探析-服务暴露过程

Dubbo 的服务暴露过程 前面已经看到,dubbo 的组件中,ServiceBean和 ReferenceBean 是 比较特殊的。这两个组件,将完成 dubbo 服务的远程 rpc 过程。 ServiceBean 作为服务端,会在 bean 创建成功后,发起服务暴露流 程。其过程如下: 在实现的 InitializingBean 接口中,spring 调用 afterPropertiesSet 方法,发起服务的暴露动作。 @Override public void export() { s

zhanglisheng2122的博客 277

Qt绘图库对决:QWT与QCustomPlot的实战选型指南

本文为Qt开发者提供了QWT与QCustomPlot两大绘图库的实战选型指南。文章从功能特性、性能资源、开发效率三大维度进行深度对比,并结合工业监控、科学计算、嵌入式设备等典型场景,给出了清晰的决策清单。对于需要专业科学图表(如极坐标、等高线图)的场景推荐QWT;对于追求高性能、实时性、快速开发及嵌入式部署的通用图表需求,QCustomPlot是更优选择。

alpha的博客 244

Dubbo 异常记录

服务提供者工作正常,但是消费者调用失败 com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method getUser in the service cn.luwfls.demo.dubbo.test.fascade.service.UserService. Tried 3 times of the providers [192.168

luwfls的博客 1226

AI Agent核心架构解析:从Tool、Skill到MCP协议的智能体构建实战

在人工智能领域,大语言模型(LLM)赋予了AI自主规划与决策的能力,推动了智能体(Agent)技术的演进。其核心原理在于构建一个具备感知、规划、行动与反思能力的自主系统。这一架构的技术价值在于将AI从被动应答升级为主动执行复杂任务的工作伙伴,显著提升了自动化水平与问题解决效率。应用场景广泛覆盖了市场分析、自动化办公、智能客服与垂直领域集成等。本文聚焦于实现这一能力的关键组件:基础工具(Tool)、组合技能(Skill)与标准化协议(MCP)。其中,Skill通过封装多个Tool形成可复用的高级能力,而MCP

chuannaoxuan4674的博客 322

sap资产post记录查询时候 报错 如图

SAP资产过账查询报错AA653解决方案摘要 错误原因:系统无法计算会计年度期间的最后一天,导致资产折旧/过账失败。常见原因包括:1)未创建2025年期间版本;2)期间日期映射不完整;3)依赖日历但未生成2025年日历。 解决方法: 通过OB37维护2025年12/13个完整期间 补充缺失期间或修正结束日期 使用SCAL生成2025年工厂日历 验证步骤: 检查T009R表2025年记录完整性 测试AFAB折旧运行 重新查询资产过账 提示:建议财务团队统一维护跨年度期间数据,并在测试系统验证变更。

金牌架构师 835

电商项目dubbo报错

这几天在做e3商城,因为一个bug,不显示错误信息,又由于自己浮躁的性格,没有仔细的去排查错误,导致花了三天的时间去排查错误引以为戒。     自己艰难的找bug过程 1.查询树能跳转到Controller但是无法执行Service中的方法   性格太急,以为没有报错,就无脑去查代码。 谁成想是自己设置了dubbo的超时时间为10分钟,没有去等那10分钟,系统自然不会给你报

xyffly的博客 2904

【好玩的游戏项目】使用Docker快速部署属于你的RPG网页小游戏

【好玩的游戏项目】使用Docker快速部署属于你的RPG网页小游戏

jks212454的博客 5578

Dubbo使用、原理、协议和数据封装格式、高性能原因

高性能Java RPC框架。

qq_43185254的博客 323

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

由浅入深Dubbo网络通信深入解析

目录 1 dubbo中数据格式 2 消费方发送请求 3 提供方接收请求 4 提供方返回调用结果 5 消费方接收调用结果 6 异步转同步 7 异步多线程数据一致 8 心跳检查

赵广陆 1202

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Dubbo基础---RPC是如何实现的

Java RPC通讯的实现方式, 介绍了Java对象和字节流互相转换的方法

brycegao321的博客 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Dubbo各种协议

协议参考手册 (+) (#) 推荐使用Dubbo协议 性能测试报告 各协议的性能情况,请参见:性能测试报告 (+) dubbo:// (+) (#) Dubbo缺省协议采用单一长连接和NIO异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器

skiof007的专栏 1209

HTTP协议

HTTP 协议 协议是指双方,或多方,相互约定好,大家都需要遵守的规则,叫协议。 HTTP 协议,就是指客户端和服务器之间通信时,发送的数据,需要遵守的规则,叫 HTTP 协议。 HTTP 协议中的数据又叫报文。 请求的 HTTP 协议格式 GET 请求 POST 请求 响应的 HTTP 协议格式 ...

qq_44713502的博客 262

Dubbo-支持的通信协议

首先Dubbo基于SPI(Service Provider Interface)服务发现机制加载自定义的所有组件,大致实现思路-如:在Protocol接口上添加@SPI注解 -@SPI("dubbo"),然后我们需要在META-INF下面dubbo/internal添加com.alibaba.dubbo.rpc.Protocol文件,里面就是我们对于Protocol接口的所有自定义组件的实现。 ...

YangzaiLeHeHe的博客 787

dubbo协议报文消息格式

dubbo默认采用netty进行网络传输,协议中对字节流的处理在com.alibaba.dubbo.remoting.exchange.codec.ExchangeCodec类中,包含了对request请求的编码和解码,response响应的编码和解码。 dubbo协议采用固定长度的消息头(16字节)和不定长度的消息体来进行数据传输,消息头定义了netty在IO线程处理时需要的信息,协议的报文格式如下: dubbo_message_protocol_header 消息头详解 协议头是16字节.

yuhui666666的博客 1430

dubbo协议报文格式

       dubbo默认采用netty进行TCP通讯。TCP是传输层协议,在应用层,往往会拓展自定义的协议,一是可以处理TCP本身的粘包拆包问题,二是约定通讯过程的其他细节。        所以dubbo默认采用自定义的dubbo协议。文档描述: Dubbo缺省协议采用单一长连接和NIO异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况。 缺省...

夕阳的博客 3228

WireShark抓包使用指南

WireShark抓包使用指南 WireShark窗口 盗图一张 数据包列表:最上面的面板用表格显示了当前捕获文件中的所有数据包,其中包括了数据包序号、数据包被捕获的相对时间、数据包的源地址和目标地址、数据包的协议以及在数据包中找到的概况信息等列。 数据包细节:中间的面板分...

王小明的专栏 4325

Dubbo解析及原理浅析

一、Duboo基本概念解释Dubbo是一种分布式服务框架。 Webservice也是一种服务框架,但是webservice并不是分布式的服务框架,他需要结合F5实现负载均衡。因此,dubbo除了可以提供服务之外,还可以实现软负载均衡。它还提供了两个功能Monitor 监控中心和调用中心。这两个是可选的,需要单独配置。

chao_19的博客 12万+

Wireshark入门与进阶系列三之远程抓包

0x00 前言     我们都知道,wireshark可以实现本地抓包,同时Wireshark也支持remote packet capture protocol(rpcapd)协议远程抓包,只要在远程主机上安装相应的rpcapd服务例程就可以实现在本地电脑执行wireshark 捕获远程电脑的流量了。 0x01 windows 上安装或启动rpcapd服务 1 WinPcap 官网:http

煜铭2011 2万+

dubbo(三)dubbo的文件上传

在(dubbo二)文章中,我们将customer和provider分开部署了,这次主要记录文件在customer和provider之间的传输. 如果文件直接在customer中进行保存,不需要传递到provider,则和dubbo就没有关系了. 如果需要传递,如果是使用dubbo协议的话,是不支持 file,inputStream 这种文件,流的传输的. dubbo中customer和pro

能写下来,理解才会更深 2万+

dubbo 数据传输大小配置

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33672400的博客 7391
上一篇: MYSQL AUTO_INCREMENT奇技淫巧
下一篇: 前后端配合干活的姿势
ChainCode
ChainCode 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄11年 115粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值