分布式应用系统中,系统之间的通讯的质量决定了系统的可用性,当然很多可以选择的技术: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经过测试无论是文件大小和速度都没有优势。
分享到:
相关推荐
java序列化(Serializable)的作用和反序列化.doc 有详细的讲解哦。 在什么地方用的到都有说明的.
序列化是干什么的? 简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保 存object states,但是Java给你提供一...
Android序列化——Serializable与Parcelable
序列化 serializable demo ! 序列化 serializable demo !
Java序列化(Serializable)与反序列化_.docx
和好友一起总结了C#的四种对象序列化方法(DataContractSerializer、XmlSerializer、BinaryFormatter、SoapFormatter),其中有DataContractSerializer和XmlSerializer不需要在对象上标注[Serializable],...
java序列化(Serializable)的作用和反序列化.pdf
Java序列化(Serializable)与反序列化__1.docx
java 的序列化与反序列化举例测试
NULL 博文链接:https://tony-lee-s.iteye.com/blog/1416044
不诗意的女程序媛不是好厨师~ ...首先,我要强行加个图,哈哈...Serializable是序列化的意思,表示将一个对象转换成可存储或可传输的状态。序列化后的对象可以在网络上进行传输,也可以存储到本地。 Parcelable(androi
什么叫序列化? 我们都知道对象是暂时保存在内存中的,不...在进行这些操作的时候都需要这个可以被序列化,要能被序列化,就得给类头加[Serializable]特性。 通常网络程序为了传输安全才这么做。不知道回答清晰满意否?
NULL 博文链接:https://oraclex.iteye.com/blog/1156078
java 序列化 对象 Serializable 写着玩的Demo 简单 实用
Java_Serializable(序列化) 的理解和总结
Tips >later Main Android中的异步任务机制 Android中AsyncTak的使用与源码分析 Android AsyncTask 完全解析,带你从源码的角度彻底理解 ...Android 异步消息处理机制完全解析,带你从...序列化: Serializable与Parce
Java 中 Serializable的应用,序列化的作用说明
NULL 博文链接:https://zhycaf.iteye.com/blog/982092
主要介绍了PHP自定义序列化接口Serializable用法,结合实例形式分析了Serializable自定义序列化接口的概念、功能、定义及使用方法,需要的朋友可以参考下
最近阅读Serializable接口和Externalizable接口的源码,并结合了一些资料,对面试过程中与序列化相关的内容做了一些总结。 一、序列化、反序列化、使用场景、意义。 序列化:将对象写入IO流中; 反序列化:从IO流中...