kafka 消息的 Thrift 序列化 - 每个结构的单个主题

Posted

技术标签:

【中文标题】kafka 消息的 Thrift 序列化 - 每个结构的单个主题【英文标题】:Thrift serialization for kafka messages - single topic per struct 【发布时间】:2016-02-21 09:29:23 【问题描述】:

我计划将 kafka 用作persistent log for event sourcing,我目前正在研究不同的序列化选项。我目前的重点是使用 thrift 对我将存储在 kafka 中的消息进行序列化和反序列化。

当使用 thrift 为 kafka 序列化消息时,最简单的方法似乎是每个 kafka 主题有一个单一的 thrift 结构。

问题:这是一个在实践中可以遵循的好模式吗?如果没有,您能否列出采用这种方法的缺点?


注意:如果您认为这个问题不符合 *** 标准,请帮我改进它!

【问题讨论】:

【参考方案1】:

Thrift 结构不携带任何结构类型的指示符(至少,在默认的二进制协议中没有)。因此,要反序列化 Thrift 数据树,您需要知道根结构的类型。因此,您对每个主题使用一种结构类型的想法是明智的。

在这种情况下可能有用的一件事是 Thrift 联合...您可以定义一个联合,其中包含您希望能够在主题上发布的所有不同类型的字段,以及消费者可以只序列化联合类型并找出设置了哪个字段。这种方法的开销很小,因为 Thrift 联合已针对此用例进行了优化。

【讨论】:

以上是关于kafka 消息的 Thrift 序列化 - 每个结构的单个主题的主要内容,如果未能解决你的问题,请参考以下文章

如何确定 thrift 消息的类型?

Thrift、Avro、Protocolbuffers - 他们都死了吗?

Kafka入门

使用thrift进行序列化与反序列化

Kafka副本同步机制

Kafka 消息格式中的变长字段(Varints)