像两个交流同样要找一个互相能理解的语言, 在国内为普通话, 跑国外多用英语相通, 两个进程间通讯也须要找一个你们都能理解的数据格式. 简单的如 JSON, XML, 那是自我描述性格式, XML 有 Schema 定义, 但尚无正式的 JSON Schema 规范. 在讲求效率的场合, 纯文本式的数据交换格式没法知足要求, 因而有二进制的 Google Protobuf 和 Apache Avro. 在 Apache 的生态像 Hadoop, Kafka 中天然是选用 Avro.apache
Avro 支持多种语言, 如 C, C++, C#, Java, PHP, Python 和 Ruby. 它使用 JSON 来定义 Schema, 经过工具能够由 Schema 生成相应语言的数据对象, 好比 Java 的 avro-tools.jar. 这样能够在跨进程跨语言透明的实现为对象交换.json
本文体验 Java 环境中 Avro 数据格式的序列化与反序列化.工具
Avro Schema 文件就是数据生产和消费端的通讯协议; 咱们能够由 Schema 生成相应的 Java 对象, 而后以具体的 Java 对象交换, 或者不生成 Java 对象而纯粹以 GenericRecord
交互. 为操做数据的简单, 咱们一般采用前一种方式, 即生成具体数据传输对象.oop
阅读全文 >>code