zoukankan      html  css  js  c++  java
  • 数据的序列化

    一、什么是序列化

    数据在网络间要进行通信,将数据结构或对象编码,然后在网络间传输就是序列化过程。

    反之的解码就是反序列化的过程。

    附:

    • POJO(Plain old java object),或者JavaBean,POJO只有setter和getter方法。
    • IDL(interface description language)文件。参与通讯的各方需要对通讯的内容需要做相关的约定。IDL用来撰写协议约定。

    二、几种常见的序列化和反序列化协议

    1、XML&SOAP

    • XML一种常用的序列化和反序列化协议。具有跨机器,跨语言等优点。
    • SOAP(SIMPLE Object Access Protocol)是一种广泛应用的,基于XML为序列化和反序列化协议的结构化消息传递协议。IDL是WSDL。在传输层的协议,SOAP最常见的使用方式XML+HTTP。

    SOAP协议具有广泛的群众基础。基于HTTP的传输协议使得其在穿越防火墙时有良好的安全特性。对于公司之间传输数据相对小或者实时性相对低的服务是个好选择。但是数据量大的时候,内存和磁盘开销比较大,因此不适合用XML。XML序列化和反序列化的开销比较大,如果对于延时性较低的场景不适用。

    2、JSON(Javascript Object Notation)

    适用场景

    • 数据量小,实时性相对较低的服务
    • 居于Web brower的Ajax请求
    • 由于JSON具有非常强的前后兼容性,对于接口经常变化,并对可调式性要求高的场景。
    • 由于JSON的典型应用场景是JSON+HTTP,适合跨防火墙访问。

    3、Thrift

    Thrift是Facebook开源提供的一个高性能,轻量级RPC服务框架,其产生正是为了满足当前大数据量,分布式、跨语言、跨平台数据通讯的需求。但是Thrift并不仅仅是序列化协议,而是一个RPC框架。

    适用场景

    • 对于需求为高性能,分布式的RPC服务,Thrift是一个优秀的解决方案。它支持众多语言和丰富的数据类型。

    缺点,安全性是个问题。无法支持向持久层直接读写数据。所以不适合做数据持久化序列化协议

    4、Protobuf

    • 对工程师友好
    • 序列化数据非常简介、紧凑、与XML相比其序列化之后的数据量约为13到110。
    • 解析速度非常块
    • 使用简洁

    5、Avro

    有两种序列化格式:Json或Binary格式。Binary格式在空间开销和性能方面可媲美Protobuf。JSON格式目前是试验阶段。Avro在做文件持久化的时候,一般会和Schema一起存储,所以Avro序列化文件自身具有自我描述属性,所以非常适合于做Hive、Pig和MapReduce的持久化数据格式。

    谢谢!
  • 相关阅读:
    git知识点总结
    自动化进阶
    unittest单元测试框架
    自动化测试模型
    webdriver
    python文件处理
    uva 11077 置换
    poj 1066 Treasure Hunt
    poj 2661 Factstone Benchmark
    hdu 4180
  • 原文地址:https://www.cnblogs.com/ylxn/p/10451805.html
Copyright © 2011-2022 走看看