最近在研究学习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 ->|
相关推荐
java运行依赖jar包
《ice-dubbo-thrift-grpc性能测试对比》 在IT领域,选择合适的RPC(远程过程调用)框架对于系统的性能和可扩展性至关重要。本文主要分析了四种常见的RPC框架——ice、dubbo、thrift和grpc的性能表现,通过一组简化...
1. **Dubbo**:Dubbo是阿里巴巴开源的高性能RPC框架,它提供了服务治理、动态配置、熔断、负载均衡等功能,支持多种协议,如HTTP、RMI、Hessian、Thrift等。 2. **服务注册与发现**:Zookeeper作为服务注册中心,...
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...
[INFO] dubbo-rpc-thrift .................................. SUCCESS [4.492s] [INFO] dubbo-rpc-memcached ............................... SUCCESS [0.713s] [INFO] dubbo-rpc-redis ............................
- **协议**:Dubbo支持多种协议,如dubbo、rmi、hessian、http、webservice、thrift、memcached、redis等。 ### 开发者最佳实践 - **缓存**:合理使用缓存可以提高服务性能。 - **分布式事务**:在分布式服务中,...
java运行依赖jar包
描述中提到的"与dubbo集成支持原生thrift协议"是指将Thrift与Dubbo框架结合使用。Dubbo是阿里巴巴开源的一个高性能、轻量级的Java服务治理框架,它专注于服务的暴露、调用、监控和治理。Thrift的原生协议是二进制的...
dubbo-2.8.5-SNAPSHOT.jar ,升级到spring4,支持rest ,thrift原生协议,avro,grpc
支持dubbo、rmi、hessian、http、webservice、thrift、redis等多种协议。 Dubbo默认协议采用单一长连接和NIO异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况。
),thrift093(建议在系统里都使用这个协议),swift(暂时不支持)),以原生协议提供服务. thrift0.9.1之后开始支持多路复用;这里我新增的部分没有使用这一特性,所以理论上是支持从thrift0.8.0--thrift0.9.3之间的所有版本...
- 协议扩展:允许 Dubbo 支持更多通信协议,如 HTTP、Thrift 等; - 调用拦截扩展:用于在服务调用前后增加自定义逻辑; - 引用监听扩展:监听服务引用的状态变化; - 暴露监听扩展:监听服务发布状态变化; - 集群...
除了默认的Dubbo协议实现,还支持Hessian、HTTP、REST、RMI、Thrift和WebService等多种协议,以及Injvm本地调用,适应性强。 - **dubbo-registry-api**:注册中心负责协调Consumer和Provider,定义了注册中心接口和...
理解TCP/IP协议、Socket编程、NIO(非阻塞I/O)等技术对于理解Dubbo如何实现高效稳定的远程调用至关重要。 4. **RPC机制**:了解常见的RPC框架如RMI、Hessian、Thrift等的工作原理,可以帮助理解Dubbo是如何提供跨...
9. **libthrift-0.8.0.jar**:Thrift是Facebook开源的一种跨语言的服务开发框架,用于构建高效、可扩展的网络服务,可能是dubbo-admin与其他Thrift服务通信的依赖。 10. **mina-core-1.1.7.jar**:Apache MINA是一...
Dubbo支持多种协议扩展,如HTTP、RMI、Hessian、Thrift等,同时也支持自定义协议。此外,还可以通过SPI(Service Provider Interface)机制扩展其他功能,如序列化、监控、过滤器等。 六、实战应用 本指南会详细...
- **thrift://**:使用Thrift协议进行远程方法调用。 - **memcached://**:使用Memcached协议进行远程方法调用。 - **redis://**:使用Redis协议进行远程方法调用。 #### 十、注册中心参考手册 - **Multicast注册...
使用Dubbo进行远程调用实现服务交互,它支持多种协议,如Hessian、HTTP、RMI、Memcached、Redis、Thrift等等。由于Dubbo将这些协议的实现进行了封装了,无论是服务端(开发服务)还是客户端(调用服务),都不需要...