我在用protobuf代替Kafka。我们正在创建许多protobuf消息,但我们仍停留在这两个选项上。想知道做这件事最好的方法是什么?希望这个问题不会被降级,因为它是基于某种观点的!
比如说,我想给Kafka发员工信息。我想使用“id”作为kafka键,值作为“employee”消息,如下所示。
选项1包括“id”。在此选项中,整个对象作为域对象位于一个位置。
message Employee {
string id;
string name;
string title;
}
选项2不包括id,因为它试图使用Kafka密钥(我们正在填充id),并让消费者在从Kafka中取出消息时将它们拼凑在一起?
message Employee {
string name;
string title;
}
对这两种方法的优缺点以及已知的最佳实践有什么建议吗?谢谢。
1条答案
按热度按时间d8tt03nd1#
根据我的经验:
消息应包含所有必需的信息。
密钥是消息传递系统了解如何处理消息的辅助信息。
所以,在两种选择中,第一种更可取。