js序列化-架构师必懂的-七种序列化机制及技术选型_第1页
js序列化-架构师必懂的-七种序列化机制及技术选型_第2页
js序列化-架构师必懂的-七种序列化机制及技术选型_第3页
js序列化-架构师必懂的-七种序列化机制及技术选型_第4页
js序列化-架构师必懂的-七种序列化机制及技术选型_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、js序列化_架构师必懂的七种序列化机制及技术选型序列化、序列化定义(Encode),主要于络传输、数据持久化 等;反序列化(deserialization)则是将从络、磁盘等读取的字节数组还原成原始对象,以便后续业务的进,般也将反序列化称为解码(Decode),主要于络传输对象的解码,以便完成远程调。、序列化协议祖”家都懂的第种序列化协议就是Java默认提供的序列化机制,需要序列化的Java对象只需要实现Serializable / Externalizable 接并成序列化ID,这个类就能够通过 ObjectInput 和 ObjectOutput 序列化和反序列化,若对Java默认的序列化

2、协议不了解,或是遗忘了,请参考:序列化详解。但是Java默认提供的序列化有很多问题,主要有以下个缺点:Java序列化后的字节数组,其它语法进反序列化。 序列化后的码流太::相对于前主流的序列化协议,Java序列化后的码流太;序列化的性能差:由于Java序列化采同步阻塞IO,相对于前主流的序列化协议,它的效率常差。序列化机制三、影响序列化性能的关键因素序列化后的码流(络带宽的占); 序列化的性能(CPU资源占);是否持跨语(异构系统的对接和开发语切换)。四、种流的序列化协议较第种: XML(1)定义:XML(ExtensibleMarkupLanguage)1998年的1.0版本被泛使今。(2)

3、优点序列化数据只包含数据本以及类的结构,不包括类型标识和程序集信息。类必须有个将由 XmlSerializer 序列化的默认构造函数。只能序列化公共属性和字段不能序列化法件庞,件格式复杂,传输占带宽(4)使场景当做配置件存储数据、实时数据转换序列化、反序列化过程第种: JSON(1)定义:JSON(JavaScript Object Notation, JS 对象标记) 是种轻量级的数据交换格式。它基于ECMAScript (w3c制定的js规范)的个集, JSON采与编程语关的本格式,但是也使了类C语(包括C, C+, C#, Java, JavaScript, Perl, Python等)

4、的习惯,简洁和清晰的层次结构使得 JSON 成为理想的数据交换语。(2)优点前后兼容性数据格式较简单,易于读写序列化后数据较,可扩展性好,兼容性好与XML相,其协议较简单,解析速度较快(3)缺点数据的描述性XML差不适合性能要求为ms级别的情况额外空间开销较(4)适场景(可替代) 跨防墙访问可调式性要求的情况基于Web browser的Ajax请求传输数据量相对,实时性要求相对低(例如秒级别)的服务第三种: Fastjson(1)定义Fastjson是个Java语编写的性能功能完善的JSON库。它采种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致。(2)优点接简单易前jav

5、a语中最快的json库(3)缺点过于注重快,偏离了“标准”及功能性代码质量不,档不全(4)适场景协议交互Web输出Android客户端第四种: Thrift(1)定义:Thrift并不仅仅是序列化协议,是个RPC框架。它可以让你选择客户端与服务端之间传输通信协议的类别,即本(text)和进制(binary)传输协议, 为节约带宽,提供传输效率,般情况下使进制类型的传输协议。(2)优点序列化后的体积, 速度快持多种语和丰富的数据类型对于数据字段的增删具有较强的兼容性持进制压缩编码(3)缺点使者较少跨防墙访问时,不安全不具有可读性,调试代码时相对困难不能与其他传输层协议共同使(例如HTTP)法持向

6、持久层直接读写数据,即不适合做数据持久化序列化协议(4)适场景分布式系统的RPC解决案第五种: Avro(1)定义:Avro属于Apache Hadoop的个项。 Avro提供两种序列化格式:JSON格式或者Binary格式。Binary格式在空间开销和解析性能可以和Protobuf媲美,Avro的产解决了JSON的冗长和没有IDL的问题(2)优点持丰富的数据类型简单的动态语结合功能具有我描述属性提了数据解析速度快速可压缩的进制数据形式可以实现远程过程调RPC持跨编程语实现(3)缺点对于习惯于静态类型语的户不直观(4)适场景在Hadoop中做Hive、Pig和MapReduce的持久化数据格式

7、第七种: Protobuf(1)定义protocol buffers 由歌开源来,在歌内部久经考验。它将数据结构以.proto件进描述,通过代码成具可以成对应数据结构的POJO对象和Protobuf相关的法和属性。(2)优点序列化后码流,性能结构化数据存储格式(XML JSON等)通过标识字段的顺序,可以实现协议的前向兼容结构化的档更容易管理和维护(3)缺点需要依赖于具成代码持的语相对较少,官只持Java 、C+ 、Python (4)适场景开源的物联平台使较多,如Thingsboard。其它protostuff 基于protobuf协议,但不需要配置proto件,直接导包即Jboss mar

8、shaling 可以直接序列化java类, 须实java.io.Serializable接Message pack 个效的进制序列化格式Hessian 采进制协议的轻量级remoting onhttp具kryo 基于protobuf协议,只持java语,需要注册(Registration),然后序列化(Output),反序列化(Input)五、性能对图解分析上图知:XML序列化(Xstream)论在性能和简洁性上较差。Thrift与Protobuf相在时空开销都有定的劣势。Protobuf和Avro在两表现都常优越。六、选型建议不同的场景适的序列化协议:对于公司间的系统调,如果性能要求在100ms以上的服务,基于XML的SOAP协议是个值得考虑的案。基于Web browser的Ajax,以及Mobile app与服务端之间的通讯,JSON协议是选。对于性能要求不太,或者以动态类型语为主,或者传输数据载荷很的的运场景,JSON也是常不错的选择。或XML能够极的提调试效率,降低系统开发成本。 当对性能和简洁性有极要求的场景,Protobuf,Thrift,Avro之间具有定的竞争关系。Hadoop项,Avro会是更好的 选择。由于Avro的设计理念

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论