一、概述
Avro是一种远程过程调用和数据序列化框架,是在Apache的Hadoop项目之内开发的。它使用JSON来定义数据类
型和通讯协议,使用压缩二进制格式来序列化数据。它主要用于Hadoop,它可以为持久化数据提供一种序列化格
式,并为Hadoop节点间及从客户端程序到Hadoop服务的通讯提供一种电报格式
二、序列化和反序列化
数据序列化就是将对象或者数据结构转化成特定的格式,使其可在网络中传输,或者可存储在内存或者文件中。反
序列化则是相反的操作,将对象从序列化数据中还原出来。
数据序列化的重点在于数据的交换和传输 。
衡量标准
- 序列化之后的数据大小
因为序列化的数据要通过网络进行传输或者是存储在内存或者文件中,所以数据量越小,则存储或者传输所
用的时间就越少 - 序列化以及反序列化的耗时及占用的CPU
- 是否能够跨语言或者平台
因为现在的企业开发中,一个项目往往会使用到不同的语言来进行架构和实现。那么在异构的网络系统中,
网络双方可能使用的是不同的语言或者是不同的操作系统,例如一端使用的是Java而另一端使用的C++;或者
一端使用的是Windows系统而另一端使用的是Linux系统,那么这个时候就要求序列化的数据能够在不同的语
言以及不同的平台之间进行解析传输
Java原生序列化/反序列化机制的问题
- Java的原生序列化不能做到对象结构的服用,就导致序列化多个对象的时候数据量较大
- Java的原生序列化在使用的时候&