Apache Avro序列化与反序列化(Java实现)

像两个交流一样要找一个互相能理解的语言,在国内为普通话,跑国外多用英语相通,两个进程间通信也需要找一个大家都能理解的数据格式。简单的如JSON、XML、那是自我描述性格式,XML有模式定义,但尚无正式的,JSON Schema 规范。在讲求效率的场合,纯文本式的数据交换格式无法满足要求,于是有二进制的谷歌Protobuf和Apache Avro。在Apache的生态像Hadoop,卡夫卡中自然是选用Avro。

Avro支持多种语言,如C, c++, c#、Java、PHP、Python和Ruby。它使用JSON来定义模式,通过工具可以由模式生成相应语言的数据对象,比如Java的,avro-tools.jar。这样可以在跨进程跨语言透明的实现为对象交换。

本文体验Java环境中Avro数据格式的序列化与反序列化。

Avro模式文件就是数据生产和消费端的通信协议;我们可以由模式生成相应的Java对象,然后以具体的Java对象交换,或者不生成Java对象而纯粹以,<代码> GenericRecord>


Apache Avro序列化与反序列化(Java实现)