java - 数据序列化框架

标签 java serialization avro

我是这个 Apache Avro(序列化框架)的新手。我知道什么是序列化,但为什么会有独立的框架,如 avro、thrift、protocol buffers 和

  1. 为什么我们不能使用 java 序列化 api 而不是这些单独的框架,java 序列化 api 是否存在任何缺陷。

  2. 下面的短语是什么意思 在 avro 或任何其他序列化框架中“不需要在架构更改时运行代码生成程序”。

请帮助我理解所有这些!!

最佳答案

Why cant we use java serialization api's instead of these separate frameworks, are there any flaws in java serializatio api's.

除非您另有所知,否则我假设您可以使用 Java 序列化。

不使用它的主要原因是

  • 您知道存在性能问题。
  • 您需要跨语言交换数据。 Java 序列化仅适用于 Java。

does not require running a code-generation program when a schema changes

我猜这意味着它可以读取旧模型或新模型的序列化数据,而无需重新生成和编译代码。即它可以容忍模型的变化。

顺便说一句:由于我使用的数据模型通常 a) 非常简单 b) 需要最高性能,所以我在不使用框架的情况下编写自己的序列化(或编写我自己的框架)这很好,前提是您的模型非常简单并且不会经常改变。

简而言之,除非您知道自己做不到,否则请先尝试 Java 序列化。

我对不同的 Serialization Methods 进行的比较

关于java - 数据序列化框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14257505/

相关文章:

java - 如何在 Java Spark 中将 avro 文件读取为对象列表

java - 无法在 Kafka Producer 中实例化 GenericRecord 以将 avro 流式传输到主题

java - 按钮的背景颜色需要透明

java - Hadoop 映射任务获取 StackOverflowError

c# - 在 WebAPI 中获取 JSON.NET 以序列化确切类型而不是子类

json - 使用 POST 请求将 WebApi 序列化为 Json

java - Appium MobileElement.tap();不适用于移动网络的 iosSimulator 8.2

java - Servlet 输出流响应出现问题

c# - 无法从 XML 反序列化

java - KafkaAvroDeserializer 因 Kyro 异常而失败