`
snoopy7713
  • 浏览: 1154283 次
  • 性别: Icon_minigender_2
  • 来自: 火星郊区
博客专栏
Group-logo
OSGi
浏览量:0
社区版块
存档分类
最新评论

序列化:serializable,hessian,protobuf性能对比

阅读更多

分布式应用系统中,系统之间的通讯的质量决定了系统的可用性,当然很多可以选择的技术:XML-RPC,RMI,SOAP,CORBA,JMS,EJB,NIO等。在传输数据的过程中,数据包越小,占用的带宽就越少,同等条件下资源利用就会越小。目前基于SOA的ESB系统中,很多采用NIO来传输数据,就涉及到对象的序列化的问题。

    本文主要讨论jdk自带序列化,hessian,Google的protobuf之间的性能比较,主要指标有以下三个:(执行序列化测试1次;1个数据对象,100个,1000个)

  1. 序列化文件大小
  2. 序列化的读取读取性能
  3. 序列化的平均写入性能

    性能指标结果(纵坐标为耗时)

    文件大小: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
分享到:
评论

相关推荐

    34_dubbo都支持哪些通信协议以及序列化协议?.zip

    1. **Java Serialization**:Java平台默认的序列化方式,简单易用,但性能较差,且序列化的对象必须实现Serializable接口。 2. **Hessian2**:一种快速的二进制序列化协议,它将Java对象转换为高效的字节流,适合于...

    jvm-serializers:比较JVM上的序列化库的基准

    "jvm-serializers"项目提供了一个基准测试框架,用于评估和比较在JVM上运行的各种序列化库的性能。以下是一些关键知识点: 1. **Java序列化**:Java自带的序列化机制,通过实现`java.io.Serializable`接口,可以将...

    20170723-课堂笔记1

    在Java之外,还有许多其他序列化技术,如JSON、Hessian、XML、protobuf、kryo、MsgPack、FST、thrift和protostuff等,每种技术都有其独特的优点和适用场景。例如,protobuf提供了高效、紧凑的二进制编码,kryo提供了...

    netty实现自定义rpc.zip

    可以使用各种序列化技术,如Java自带的Serializable、protobuf、Hessian或Fastjson等。选择哪种取决于性能、兼容性和易用性等因素。 2. **服务注册与发现**:在分布式环境中,服务提供者需要将自己的服务注册到一个...

    RPC通信模型(java)

    这需要实现Serializable接口,进行序列化。服务器端接收到字节流后,再进行反序列化恢复成对象。 5. **网络通信**: Java的Socket编程是实现RPC通信的基础。客户端通过Socket连接到服务器,发送请求,服务器端接收...

    最简单的RPC框架源码.zip

    常见的序列化工具有Java自带的`java.io.Serializable`、protobuf、Hessian、Fastjson等。在RPCDemo中,可能会使用其中的一种或自定义的序列化方式。 3. **网络通信**: RPC框架通常基于TCP或UDP协议进行通信,例如...

    dubbo 文档

    序列化是网络通信中的关键环节,Dubbo内置了多种序列化方式,如Java自带的Serializable、Google的Protobuf等。 5. **负载均衡**:Dubbo提供了多种负载均衡策略,如Random、RoundRobin、LeastActive等,帮助服务消费...

    dubbo2.4源码下载

    3. **数据序列化**:Dubbo支持多种序列化方式,如Java自带的Serializable、Google的Protocol Buffers(protobuf)、Hessian2等。数据序列化是RPC通信中的重要环节,影响着网络传输效率和跨语言兼容性。 4. **负载...

Global site tag (gtag.js) - Google Analytics