分布式应用系统中,系统之间的通讯的质量决定了系统的可用性,当然很多可以选择的技术:XML-RPC,RMI,SOAP,CORBA,JMS,EJB,NIO等。在传输数据的过程中,数据包越小,占用的带宽就越少,同等条件下资源利用就会越小。目前基于SOA的ESB系统中,很多采用NIO来传输数据,就涉及到对象的序列化的问题。
本文主要讨论jdk自带序列化,hessian,Google的protobuf之间的性能比较,主要指标有以下三个:(执行序列化测试1次;1个数据对象,100个,1000个)
- 序列化文件大小
- 序列化的读取读取性能
- 序列化的平均写入性能
性能指标结果(纵坐标为耗时)
文件大小:hessian最小,传输带宽方面占有优势。
写操作:写操作在大批量的时候,protobuf比hessian和jdk有优势。
读操作:读取方面protobuf仍然占有优势,但是总体上来书,hessian和protobuf差距不大。
性能外的问题:
1:易用性:hessian比protobuf使用起来要简单的多,google需要预先生成一个*.proto文件,使用的时候需要依赖它的build接口,和GAE中的web.py的模板文件一样,预处理真是方便的框架,并没有让用户觉得爽。这方面hessian占优势。
2:学习成本:老牌hessian在java平台上广结良缘,文档和FAQ相当齐全,学习成本相对较低。google搜索protobuf google显示21.1W条,而hessian java却有54.4W条。
3:跨平台:hessian支持的语言:java,c++,python,php,erlang,ruby等,主要是针对java平台的,C++版本是05年的和python版本是07年的,更新都较慢;protobuf这块做的就比较好,如果系统中需要不同语言的就选择protobuf了,单java语言的还是选择hessian比较好。
其他方面的知识:
二进制协议比基于xml协议(Burlap和apache XML-RPC)的效率要高的多(ORMI的HTTP隧道启用除外),XML-RPC经过测试无论是文件大小和速度都没有优势。
- 大小: 25.6 KB
- 大小: 21.6 KB
- 大小: 27.3 KB
分享到:
相关推荐
1. **Java Serialization**:Java平台默认的序列化方式,简单易用,但性能较差,且序列化的对象必须实现Serializable接口。 2. **Hessian2**:一种快速的二进制序列化协议,它将Java对象转换为高效的字节流,适合于...
"jvm-serializers"项目提供了一个基准测试框架,用于评估和比较在JVM上运行的各种序列化库的性能。以下是一些关键知识点: 1. **Java序列化**:Java自带的序列化机制,通过实现`java.io.Serializable`接口,可以将...
在Java之外,还有许多其他序列化技术,如JSON、Hessian、XML、protobuf、kryo、MsgPack、FST、thrift和protostuff等,每种技术都有其独特的优点和适用场景。例如,protobuf提供了高效、紧凑的二进制编码,kryo提供了...
可以使用各种序列化技术,如Java自带的Serializable、protobuf、Hessian或Fastjson等。选择哪种取决于性能、兼容性和易用性等因素。 2. **服务注册与发现**:在分布式环境中,服务提供者需要将自己的服务注册到一个...
这需要实现Serializable接口,进行序列化。服务器端接收到字节流后,再进行反序列化恢复成对象。 5. **网络通信**: Java的Socket编程是实现RPC通信的基础。客户端通过Socket连接到服务器,发送请求,服务器端接收...
常见的序列化工具有Java自带的`java.io.Serializable`、protobuf、Hessian、Fastjson等。在RPCDemo中,可能会使用其中的一种或自定义的序列化方式。 3. **网络通信**: RPC框架通常基于TCP或UDP协议进行通信,例如...
序列化是网络通信中的关键环节,Dubbo内置了多种序列化方式,如Java自带的Serializable、Google的Protobuf等。 5. **负载均衡**:Dubbo提供了多种负载均衡策略,如Random、RoundRobin、LeastActive等,帮助服务消费...
3. **数据序列化**:Dubbo支持多种序列化方式,如Java自带的Serializable、Google的Protocol Buffers(protobuf)、Hessian2等。数据序列化是RPC通信中的重要环节,影响着网络传输效率和跨语言兼容性。 4. **负载...