抄底dubbo底层的数据包格式

聊聊dubbo协议2 本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star。 在《聊聊dubbo协议》中介绍了attachments在consumer和provider间的传递情况,有个疑问没有给出答案。 为什么2.7.x版本的dubbo不支持provider端向consumer端回传隐式参数呢?今天的续集将揭晓答案。 抓包确定是provider没发还是consumer丢掉 以下测试基于dubbo 2.7.6版本 在provider端加入下面的代码 RpcContext.. 阅读详情

 

先来看看一段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

educoder中Hive综合应用案例 — 用户搜索日志分析 Hive综合应用案例 — 用户搜索日志分析 阅读详情

相关推荐

飞凌OK3588-C Linux R4系统下MIPI YUV摄像头CSI尺寸错误排查与极性适配方案

本文详细介绍了在飞凌OK3588-C平台的Linux R4系统下调试MIPI YUV摄像头时遇到的'csi size err'错误排查与极性适配方案。通过分析信号极性、驱动参数调整及FPGA协同调试,提供了从硬件检测到系统级调试的完整解决方案,帮助开发者快速解决类似问题。

bean的博客 259

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的博客 2781

BGE(BAAI General Embedding)模型详解

BGE(BAAI General Embedding)是北京智源人工智能研究院(BAAI)推出的通用文本嵌入模型系列,旨在为各种自然语言处理任务提供高质量的向量表示。

ttyy1112的专栏 7561

电商项目dubbo报错

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

xyffly的博客 2904

保姆级教程:DBeaver社区版安装与驱动配置(附阿里云镜像解决下载超时)

本文提供DBeaver社区版的保姆级安装教程,涵盖版本选择、安装路径设置到驱动配置优化。特别针对国内用户遇到的下载超时问题,详细介绍了如何配置阿里云镜像加速驱动下载,确保高效连接MySQL等主流数据库。

weixin_30430169的博客 480

Excel下拉公式不自动计算?5步彻底解决!

Excel下拉公式不自动计算?5步彻底解决!在使用Excel处理数据时,公式下拉填充是提升效率的核心操作。但许多用户都遇到过这样的困惑:明明设置了公式,下拉时结果却纹丝不动。本文将从技术原理出发,结合5步实操方案,为您彻底解析这个高频问题的根源与解决方案。

mmoo_python的博客 1万+

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

【vivado PG学习】1 PG168:7 Series FPGAs Transceivers官方配置方法学习笔记

介绍: The 7 series FPGAs Transceivers Wizard LogiCORE™ IP 自动创建配置7系列fpga 收发器的HDL封装。向导可以配置一个或多个支持行业主流标准的高速串行收发器。或者从零开始支持各种自定义协议。 功能: 创建配置7系列fpga 收发器的HDL封装。 自动对模拟设置进行配置。 预定义了提供Aurora 8B/10B, Aurora 64B/66B, CEI-6G,DisplayPort, Interlaken, Open Base StationAr..

w0shishabi的博客 5万+

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

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

zhanglisheng2122的博客 277

Windows 11任务管理器隐藏技能:一眼揪出内存泄漏的“元凶”(分页/非分页缓冲池详解)

本文详细介绍了Windows 11任务管理器中隐藏的分页缓冲池和非分页缓冲池功能,帮助用户精准定位内存泄漏问题。通过启用隐藏列、解读数据异常信号,并结合实战案例和高级工具推荐,为开发者和IT运维人员提供了高效的内存问题诊断与解决方案。

weixin_29284885的博客 632

借助ChatGPT完成课题申报书中框架思路写作指南

通过这篇文章的学习,我们可以让ChatGPT先为用户匹配研究理论、研究方法、研究思路、研究内容等,为申请人提供一些参考,能够帮助对拟申报课题有一个初步的认识。当申请人找到了合适的理论、方法和问题后,再借助精细化提示词模型提问,那ChatGPT回答的启发性肯定会有质的提升,更具有使用价值。

智能AI让学术科研更容易 2468

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

OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写)

ModbusTCP通信是采用直接方式进行通信,用OPC的方式如何去做呢?PLC作为ModbusTCP服务器,用KepServer作为ModbusTCP客户端,同时作为OPC服务器,PC作为OPC客户端新建项目,加载dll库(利用COM技术写的)添加引用,查看到其中包含了众多方法其中OPCGroups继承于IOPCGroups接口。

分享学习成长历程,Winter is coming! 1万+

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

高性能Java RPC框架。

qq_43185254的博客 323

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

WINCC7.3破解文件

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

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

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

brycegao321的博客 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

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

夕阳的博客 3228

精通Dubbo——Dubbo支持的协议的详解

Dubbo支持dubbo、rmi、hessian、http、webservice、thrift、redis等多种协议,但是Dubbo官网是推荐我们使用Dubbo协议的。下面我们就针对Dubbo的每种协议详解讲解,以便我们在实际应用中能够正确取舍。dubbo协议缺省协议,使用基于mina1.1.7+hessian3.2.1的tbremoting交互。 连接个数:单连接 连接方式:长连接 传输协议

路漫漫,水迢迢 7万+

Dubbo 支持哪些序列化协议?

面试题dubbo 支持哪些通信协议?支持哪些序列化协议?说一下 Hessian 的数据结构?PB 知道吗?为什么 PB 的效率是最高的?面试官心理分析上一个问题,说说 dubbo 的基本工作原理,那是你必须知道的,至少要知道 dubbo 分成哪些层,然后平时怎么发起 rpc 请求的,注册、发现、调用,这些是基本的。接着就可以针对底层进行深入的问问了,比如第一步就可以先问问序列化协议这块,就是平时 ...

weixin_34249367的博客 178

dubbo 学习(5) dubbo多协议和多注册中心

一、配置dubbo多协议模式    dubbo支持多种连接协议进行传输,比如大数据用短连接协议,小数据大并发用长连接协议。配置如下: <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns

荒野哞的专栏 3万+

dubbo传输协议

一、dubbo的通讯协议1、dubbo协议,是默认的基于TCP传输协议的长连接,NIO异步通信,适合于小数据量高并发的场景以及服务消费者机器数远大于服务提供者机器数的情况。,不适合大文件,视频的传输连接个数:单连接连接方式:长连接传输协议:TCP传输方式:NIO异步传输序列化:Hessian二进制序列化适用范围:传入传出参数数据包较小(建议小于100K),消费者比提供者个数多,单一消费者无法压满提...

f1ame1的博客 6190

dubbo 请求调用过程分析

服务消费方发起请求 当服务的消费方引用了某远程服务,服务的应用方在spring的配置实例如下: dubbo:referenceid="demoService"interface="com.alibaba.dubbo.demo.DemoServ ice" /> demoService实例其实是代理工厂生产的代理对象(大家可以参考代理那部分生成的伪代码),在代码中调用demoService.

paul_wei2008的专栏 1万+

dubbo 中文官网

根大家分享一下:dubbo的中文官网迁移到了githup上地址:https://dubbo.gitbooks.io/dubbo-user-book/content/preface/background.html   以前的地址不可用了

zhen340417593的专栏 2万+

tcpdump安装配置及抓包分析

tcpdump安装配置及抓包分析 预装软件: yum -y install flex yum -y install bison yum -y install gcc 下载及安装 cd /var/install/ wget http://www.tcpdump.org/release/libpcap-1.5.3.tar.gz wget http://www.tcpdump.org/

牛儿吃草的博客 1万+

Dubbo传输文件

参考博客:https://blog.youkuaiyun.com/qq315737546/article/details/52792037 总结:dubbo协议是不支持File或者FileinputStream的,如果要处理文件,有以下两种思路: 1.dubbo改用hessian通信协议。 2.将文件转化为byte[]数据传输。 ...

he582754810的博客 5428

case-服务超时排查

一、问题描述 线上的一个服务A连续出现rpc调用服务B超时报错。 仔细看了一下报警发现超时的rpc服务B都是在集中在一台服务器h上,并且都是一个接口访问失败。初步排除网络抖动原因和受诉宿主机影响,因为异常还在出现,根据该接口平常qps情况应该是该接口所有请求都超时了。 二、原因分析 1. 查看系统各项监控指标: CPU: 最上边的线就是该服务器,可以看出cpu使用率很高远超出其他机...

han_dada的博客 697
上一篇: 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、付费专栏及课程。

余额充值