`

dubbo dubbo-thrift thrift三种协议直观对比

 
阅读更多

最近在研究学习dubbo源码,下面对比一下dubbo dubbo-thrift thrift三种协议序列化后报文体积:

远程调用一个简单方法:Hello.hello("哈哈哈");

 

dubbo:{ -38, -69, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -48, 5, 50, 46, 48, 46, 48, 48,
				33, 99, 111, 109, 46, 100, 117, 98, 98, 111, 46, 97, 112, 112, 115, 46, 116, 104, 114, 105, 102, 116,
				46, 72, 101, 108, 108, 111, 36, 73, 102, 97, 99, 101, 5, 48, 46, 48, 46, 48, 11, 104, 101, 108, 108,
				111, 83, 116, 114, 105, 110, 103, 18, 76, 106, 97, 118, 97, 47, 108, 97, 110, 103, 47, 83, 116, 114,
				105, 110, 103, 59, 8, -27, -109, -120, -27, -109, -120, 111, 111, 111, 111, 111, 111, 72, 4, 112, 97,
				116, 104, 48, 33, 99, 111, 109, 46, 100, 117, 98, 98, 111, 46, 97, 112, 112, 115, 46, 116, 104, 114,
				105, 102, 116, 46, 72, 101, 108, 108, 111, 36, 73, 102, 97, 99, 101, 9, 105, 110, 116, 101, 114, 102,
				97, 99, 101, 48, 33, 99, 111, 109, 46, 100, 117, 98, 98, 111, 46, 97, 112, 112, 115, 46, 116, 104, 114,
				105, 102, 116, 46, 72, 101, 108, 108, 111, 36, 73, 102, 97, 99, 101, 7, 116, 105, 109, 101, 111, 117,
				116, 7, 54, 48, 48, 48, 48, 48, 48, 7, 118, 101, 114, 115, 105, 111, 110, 5, 48, 46, 48, 46, 48, 90 };

dubbo_thrift : { 0, 0, 0, 97, -38, -68, 0, 0, 0, 97, 0, 54, 1, 0, 0, 0, 33, 99, 111, 109, 46,
				100, 117, 98, 98, 111, 46, 97, 112, 112, 115, 46, 116, 104, 114, 105, 102, 116, 46, 72, 101, 108, 108,
				111, 36, 73, 102, 97, 99, 101, 0, 0, 0, 0, 0, 0, 0, 0, -128, 1, 0, 1, 0, 0, 0, 11, 104, 101, 108, 108,
				111, 83, 116, 114, 105, 110, 103, 0, 0, 0, 1, 11, 0, 1, 0, 0, 0, 12, -27, -109, -120, -27, -109, -120,
				111, 111, 111, 111, 111, 111, 0 };

thrift:{ -128, 1, 0, 1, 0, 0, 0, 11, 104, 101, 108, 108, 111, 83, 116, 114, 105, 110, 103,
				0, 0, 0, 1, 11, 0, 1, 0, 0, 0, 12, -27, -109, -120, -27, -109, -120, 111, 111, 111, 111, 111, 111, 0 };

 

显而易见,dubbo协议体积是最大的。实际上,dubbo协议是对hession进行一定的改良。报文体积大的其中一个原因是协议里面附加了较多信息,比如版本号,接口名字,参数类型等。另一个重要原因是dubbo把调用对象或返回结果,直接整个序列化。

 

dubbo-thrift协议,在thrift原生协议前增加了一些头信息,但信息量不大:

 

 * |<-                                  message header                                                                  ->|<- message body ->|
 * +----------------+----------------------+------------------+---------------------------+-----------------------------------------+
 * | magic (2 bytes)|message size (4 bytes)|head size(2 bytes)| version (1 byte) | header |   message body   |
 * +----------------+----------------------+------------------+---------------------------+-----------------------------------------+
 * |<-                                               message size                                                                                          ->|

 

分享到:
评论

相关推荐

    dubbo-rpc-thrift-2.8.4.jar

    java运行依赖jar包

    ice-dubbo-thrift-grpc性能测试对比

    《ice-dubbo-thrift-grpc性能测试对比》 在IT领域,选择合适的RPC(远程过程调用)框架对于系统的性能和可扩展性至关重要。本文主要分析了四种常见的RPC框架——ice、dubbo、thrift和grpc的性能表现,通过一组简化...

    dubbo-admin-2.6.0.war(dubbo监控中心)

    1. **Dubbo**:Dubbo是阿里巴巴开源的高性能RPC框架,它提供了服务治理、动态配置、熔断、负载均衡等功能,支持多种协议,如HTTP、RMI、Hessian、Thrift等。 2. **服务注册与发现**:Zookeeper作为服务注册中心,...

    alibaba_dubbox_2.8.4.zip[jar、pom]

    dubbo-rpc-thrift dubbo-rpc-webservice dubbo-simple dubbo-test dubbo-test-benchmark dubbo-test-benchmark-api dubbo-test-benchmark-client dubbo-test-benchmark-server dubbo-test-examples fastjson hessian...

    Dubbo 2.5.3 jar包

    [INFO] dubbo-rpc-thrift .................................. SUCCESS [4.492s] [INFO] dubbo-rpc-memcached ............................... SUCCESS [0.713s] [INFO] dubbo-rpc-redis ............................

    dubbo-user-book

    - **协议**:Dubbo支持多种协议,如dubbo、rmi、hessian、http、webservice、thrift、memcached、redis等。 ### 开发者最佳实践 - **缓存**:合理使用缓存可以提高服务性能。 - **分布式事务**:在分布式服务中,...

    dubbo-rpc-thrift-2.8.4-sources.jar

    java运行依赖jar包

    thrift官方代码+与dubbo集成支持原生thrift协议

    描述中提到的"与dubbo集成支持原生thrift协议"是指将Thrift与Dubbo框架结合使用。Dubbo是阿里巴巴开源的一个高性能、轻量级的Java服务治理框架,它专注于服务的暴露、调用、监控和治理。Thrift的原生协议是二进制的...

    dubbo-2.8.5-SNAPSHOT.jar

    dubbo-2.8.5-SNAPSHOT.jar ,升级到spring4,支持rest ,thrift原生协议,avro,grpc

    dubbo-admin-0.2.0.jar

    支持dubbo、rmi、hessian、http、webservice、thrift、redis等多种协议。 Dubbo默认协议采用单一长连接和NIO异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况。

    xmljava系统源码-dubbo-thrift:改自yankai913的项目

    ),thrift093(建议在系统里都使用这个协议),swift(暂时不支持)),以原生协议提供服务. thrift0.9.1之后开始支持多路复用;这里我新增的部分没有使用这一特性,所以理论上是支持从thrift0.8.0--thrift0.9.3之间的所有版本...

    dubbo-dev-book.pdf

    - 协议扩展:允许 Dubbo 支持更多通信协议,如 HTTP、Thrift 等; - 调用拦截扩展:用于在服务调用前后增加自定义逻辑; - 引用监听扩展:监听服务引用的状态变化; - 暴露监听扩展:监听服务发布状态变化; - 集群...

    dubbo源码分析系列1

    除了默认的Dubbo协议实现,还支持Hessian、HTTP、REST、RMI、Thrift和WebService等多种协议,以及Injvm本地调用,适应性强。 - **dubbo-registry-api**:注册中心负责协调Consumer和Provider,定义了注册中心接口和...

    dubbo2.0-源码阅读

    理解TCP/IP协议、Socket编程、NIO(非阻塞I/O)等技术对于理解Dubbo如何实现高效稳定的远程调用至关重要。 4. **RPC机制**:了解常见的RPC框架如RMI、Hessian、Thrift等的工作原理,可以帮助理解Dubbo是如何提供跨...

    dubbo-admin

    9. **libthrift-0.8.0.jar**:Thrift是Facebook开源的一种跨语言的服务开发框架,用于构建高效、可扩展的网络服务,可能是dubbo-admin与其他Thrift服务通信的依赖。 10. **mina-core-1.1.7.jar**:Apache MINA是一...

    dubbo-用户指南

    Dubbo支持多种协议扩展,如HTTP、RMI、Hessian、Thrift等,同时也支持自定义协议。此外,还可以通过SPI(Service Provider Interface)机制扩展其他功能,如序列化、监控、过滤器等。 六、实战应用 本指南会详细...

    dubbo中文文档说明

    - **thrift://**:使用Thrift协议进行远程方法调用。 - **memcached://**:使用Memcached协议进行远程方法调用。 - **redis://**:使用Redis协议进行远程方法调用。 #### 十、注册中心参考手册 - **Multicast注册...

    Dubbo Dubbo

    使用Dubbo进行远程调用实现服务交互,它支持多种协议,如Hessian、HTTP、RMI、Memcached、Redis、Thrift等等。由于Dubbo将这些协议的实现进行了封装了,无论是服务端(开发服务)还是客户端(调用服务),都不需要...

Global site tag (gtag.js) - Google Analytics