一、概述
Apache Avro^TM 是一个数据序列化系统;
Avro提供的技术支持包括以下五个方面:
优秀的数据结构;
一个紧凑的,快速的,二进制数据格式;
一个容器文件,用来存储持久化数据;
RPC远程过程调用;
集成最简单的动态语言。读取或者写入数据文件,使用或实现RPC协议均不需要代码实现。对于静态语言编写的话需要实现;
二、Schema模式
Arvo系统依赖于Schema,读取Avro数据时,这个Schema一直被用作数据写入。可以实现每个数据写入而没有带来额外的开销,从而使得序列化即快速又敏捷。由于数据 Shema 完全定义好的,这更便于使用动态语言操作。
当我们把Avro数据存储在文件中时,其Schema也会存储起来,因此后续任何程序均可以读取数据处理文件。如果读取数据的程序希望使用其他的Schema, 则可以动态改变,这两种都支持。
在RPC中使用AVRO时,Client和Server在连接 handshake 中交换Schema,(这部操作可以优化,便于对于大多数的调用器Calls,没有Schema的模式)。由于Client和Server都具有对方的完整信息,因此可以轻松解决相同命名字段(命名冲突)、字段缺失、字段多余等对应关系。
Avro的Schema时使用json定义的。这对于已经使用了JSON库的编程语言很友好。
三、和其他系统的比较Comparision with other systems
Avro提供的函数功