像兩個交流同樣要找一個互相能理解的語言, 在國內爲普通話, 跑國外多用英語相通, 兩個進程間通訊也須要找一個你們都能理解的數據格式. 簡單的如 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