Goavro 是一个用于编码和解码 Avro 数据的库。
[!IMPORTANT] 在内部,大多数 LinkedIn 已经转用 https://github.com/hamba/avro 来满足 Avro 序列化/反序列化的需求,因为我们发现它在大规模场景中性能更高。goavro 处于维护模式。
所有使用 gopkg.in 的内容都已被移除,取而代之的是 Go 模块。请将导入路径更新为 GitHub.com/linkedin/goavro/v2。v1 版本的用户仍可以通过在 go.mod 或 Gopkg.toml 文件中添加约束来使用旧版 goavro。
此库的原始版本是在我真正理解 Avro 命名空间应该如何工作之前编写的。现在使用 Avro 很长一段时间,并且经过大量研究后,我认为我已经正确地理解了 Avro 命名空间,并且该库现在正确处理了 Apache Avro 分发的关于命名空间的所有测试用例,包括能够在同一个架构中后续引用先前定义的数据类型。
原始版本的库需要创建 goavro.Record 实例,并使用 getter 和 setter 访问记录的字段。当模型复杂时,这需要大量的工作来调试和正确处理。原始版本还要求用户将模型分成几个部分,并为每种记录类型使用不同的模型。这很繁琐、麻烦且容易出错。
暂无开放 Issues,或尚未同步最近议题。