1. 程式人生 > >Apache Avro 序列化與反序列化 (Java 實現)

Apache Avro 序列化與反序列化 (Java 實現)

Avro

像兩個交流一樣要找一個互相能理解的語言, 在國內為普通話, 跑國外多用英語相通, 兩個進程間通信也需要找一個大家都能理解的數據格式. 簡單的如 JSON, XML, 那是自我描述性格式, XML 有 Schema 定義, 但尚無正式的 JSON Schema 規範. 在講求效率的場合, 純文本式的數據交換格式無法滿足要求, 於是有二進制的 Google Protobuf 和 Apache Avro. 在 Apache 的生態像 Hadoop, Kafka 中自然是選用 Avro.

Avro 支持多種語言, 如 C, C++, C#, Java, PHP, Python 和 Ruby. 它使用 JSON 來定義 Schema, 通過工具可以由 Schema 生成相應語言的數據對象, 比如 Java 的 avro-tools.jar. 這樣可以在跨進程跨語言透明的實現為對象交換.

本文體驗 Java 環境中 Avro 數據格式的序列化與反序列化.

Avro Schema 文件就是數據生產和消費端的通信協議; 我們可以由 Schema 生成相應的 Java 對象, 然後以具體的 Java 對象交換, 或者不生成 Java 對象而純粹以 GenericRecord 交互. 為操作數據的簡單, 我們通常采用前一種方式, 即生成具體數據傳輸對象. 閱讀全文 >>


Apache Avro 序列化與反序列化 (Java 實現)