`
x0516
  • 浏览: 16362 次
社区版块
存档分类
最新评论

dubbo网络通讯源码阅读笔记

 
阅读更多

dubbo网络通讯层协议浅析。

开始是com.alibaba.dubbo.remoting.transport.netty.NettyServer监听tcp

然后dubbo将ByteBuffer 封装成ChannelBufferInputStream InputStream子类

com.alibaba.dubbo.rpc.protocol.dubbo.DubboCodec#decodeBody

开始协议解析

int readable = buffer.readableBytes();
byte[] header = new byte[Math.min(readable, HEADER_LENGTH)];
buffer.readBytes(header);

前面 16个字节为头信息

if (readable > 0 && header[0] != MAGIC_HIGH 
|| readable > 1 && header[1] != MAGIC_LOW)
int len = Bytes.bytes2int(header, 12);
long id = Bytes.bytes2long(header, 4);

byte flag = header[2], proto = (byte) (flag & SERIALIZATION_MASK);
Serialization s = CodecSupport.getSerialization(channel.getUrl(), proto);

 flag是用来确定协议的,和选择用那种序列化的

dubbo是用Hessian2Serialization来序列化的

status是用来标识成功失败的

 

最后到

com.alibaba.dubbo.rpc.protocol.dubbo.DecodeableRpcInvocation#decode(com.alibaba.dubbo.remoting.Channel, java.io.InputStream)来具体解析对象

setAttachment(Constants.DUBBO_VERSION_KEY, in.readUTF());
setAttachment(Constants.PATH_KEY, in.readUTF());
setAttachment(Constants.VERSION_KEY, in.readUTF());

设置相关值

 

com.alibaba.com.caucho.hessian.io.Hessian2Input#readObject()

这个方法可以看到dubbo如何从字节中解析出一个具体的对象。

 

 

后面有时间再具体深入分析吧。

 

 

  • 大小: 4.6 KB
分享到:
评论

相关推荐

    dubbo2.0-源码阅读

    在深入理解Dubbo源码之前,需要掌握一系列基础知识,这将有助于更好地理解Dubbo的设计与实现。 1. **Java语言编程**:熟悉Java语言的基本语法和面向对象特性,对于理解Dubbo中的各种类、接口以及方法非常重要。 2. ...

    dubbo源码解析

    本文对dubbo源码进行了深入的解析,涵盖了dubbo的架构、核心机制分析、扩展点加载流程、代理机制、远程调用流程、集群和容错处理、监控机制等多个方面。通过阅读和理解这些内容,可以更好地掌握dubbo的内部工作机制...

    dubbo入门学习框架源码

    通过深入学习和实践Dubbo源码,开发者不仅可以更好地理解Dubbo的工作原理,还能在实际项目中灵活运用,解决各种复杂的分布式服务问题。Dubbo的源码阅读也是一个不断提升自身技术深度的过程,有助于成长为更优秀的...

    dubbo-admin源码

    《深入剖析Dubbo-admin源码》 Dubbo-admin是Dubbo框架的重要组成部分,它作为一个服务治理的控制台,为开发者提供了便捷的服务管理、监控和调试功能。本文将深入解析dubbo-admin的源码,帮助读者理解其核心机制,...

    阿里巴巴dubbo-2.5.4源代码

    《阿里巴巴Dubbo 2.5.4源代码解析与应用》 阿里巴巴的Dubbo是一款高性能、轻量级的Java远程服务框架,它以其强大的服务治理功能和高效的通信机制,在微服务领域占据着重要的地位。本篇文章将深入探讨Dubbo 2.5.4...

    dubbo源码分析系列

    《Dubbo源码分析系列》是一份深入探讨Java开源框架Dubbo核心原理和技术细节的资料。Dubbo,作为阿里巴巴的一款高性能、轻量级的服务治理框架,它为分布式系统提供了服务发现、调用、负载均衡、容错等关键功能。这份...

    dubbo-2.5.3源码

    《深入剖析Dubbo 2.5.3源码》 Dubbo是一款高性能、轻量级的开源Java RPC框架,由阿里巴巴公司开发并贡献给社区。本文将深入探讨Dubbo 2.5.3版本的核心设计理念、主要功能以及关键源码实现。 一、Dubbo概述 Dubbo...

    dubbo应用实例源码工程

    【标题】"dubbo应用实例源码工程"指的是一个基于Dubbo框架的示例项目,它提供了实际操作的代码,帮助开发者理解如何在项目中应用Dubbo。Dubbo是阿里巴巴开源的一个高性能、轻量级的服务治理框架,广泛应用于分布式...

    dubbo源码分析pdf.zip

    《Dubbo源码分析》是一套深入探讨Apache Dubbo这一著名Java开源框架的书籍,旨在帮助开发者更好地理解和应用Dubbo。Dubbo是一个高性能、轻量级的服务治理框架,广泛应用于微服务架构中,以实现服务的发布、发现、...

    dubbo源码解析2

    Dubbo的源代码主要由以下几个部分组成: 1. **core**:核心功能实现,包括SPI扩展机制、代理工厂等。 2. **remoting**:网络通信相关功能。 3. **cluster**:集群管理相关功能。 4. **registry**:服务注册中心相关...

    dubbo2.8.4源代码

    【标题】"Dubbo 2.8.4 源代码" 涵盖了分布式服务框架的核心技术,是阿里巴巴开源的一款高性能、轻量级的服务治理框架。它为开发者提供了微服务开发所需的诸多功能,包括服务注册与发现、负载均衡、调用链路监控等。...

    dubbo2.0源码解读

    5. **源文件概述**:Dubbo的源代码包括多个模块,如dubbo-common、dubbo-remoting、dubbo-rpc、dubbo-cluster等,分别处理基础工具、网络通信、远程调用、集群逻辑等。 6. **核心机制分析**: - **服务注册与发现*...

    dubbo 分布式搭建源码

    【Dubbo 分布式搭建源码详解】 Dubbo 是阿里巴巴开源的一款高性能、轻量级的 Java RPC 框架,它提供了服务治理、负载均衡、容错机制等核心功能,广泛应用于微服务架构中。本资源是基于博客“Dubbo+zookeeper 最简单...

    Dubbo源代码(2.8.4)

    要编译Dubbo源码,首先需要安装Java环境和Maven,然后在项目根目录下执行`mvn clean install`命令,完成所有模块的编译。编译成功后,可以通过示例项目或自定义项目来运行和测试Dubbo服务。 5. **扩展性**: ...

    dubbo-master源码

    通过对Dubbo源码的阅读和分析,我们可以更深入地理解服务治理的原理,学习到如何设计高可用、可扩展的微服务架构,这对于提升我们的Java编程技能和系统设计能力具有重要的实践意义。同时,Dubbo也是许多企业级项目的...

    Dubbo源代码(2.5.4)

    【Dubbo源代码(2.5.4)】是一份重要的开源项目资源,它包含了Dubbo框架在2.5.4版本的完整源代码。Dubbo是中国阿里巴巴公司贡献的高性能、轻量级的服务治理框架,它专注于服务调用、监控和服务治理。这个版本的源...

    dubbo-2.6.1源码

    dubbo2.6.1的源码,下载后解压导入IDE后就可以阅读,主要帮助那些想要阅读源码的同学

    Spring+mybatis+dubbo整合源代码及jar包

    通过Spring_Mybatis_Dubbo_Jars.zip和Spring_Mybatis_Dubbo2.zip这两个压缩包,你可以获取到整合所需的所有依赖包和源代码,从而快速搭建起这个框架。这将帮助开发者更快地理解并掌握这三大框架的协同工作方式,提高...

Global site tag (gtag.js) - Google Analytics