首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Kafka的键/值对消息的目的是什么?

Kafka的键/值对消息的目的是什么?
EN

Stack Overflow用户
提问于 2016-11-30 01:52:52
回答 3查看 51.2K关注 0票数 116

Kafka | producers的所有examples都显示ProducerRecord的键/值对不仅具有相同的类型(所有示例都显示为<String,String>),而且具有相同的。例如:

producer.send(new ProducerRecord<String, String>("someTopic", Integer.toString(i), Integer.toString(i)));

但在Kafka文档中,我似乎找不到在哪里解释了键/值的概念(以及它的基本用途/工具)。在传统的消息传递(ActiveMQ、RabbitMQ等)中我总是在特定的主题/队列/交换上触发一条消息。但Kafka是第一个似乎需要键/值对而不仅仅是常规字符串消息的代理。

所以我问:要求生产商发送KV对的目的/用处是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-11-30 04:53:12

Kafka使用由分区组成的分布式日志的抽象。将日志拆分为多个分区可以向外扩展系统。

键用于确定消息附加到的日志中的分区。而该值是消息的实际有效载荷。在这方面,示例实际上并不是很“好”;通常,您会将复杂类型作为值(如元组类型或JSON或类似类型),并提取一个字段作为键。

请参阅:http://kafka.apache.org/intro#intro_topicshttp://kafka.apache.org/intro#intro_producers

通常,键和/或值也可以是null。如果密钥为null,则会选择一个随机分区。如果该值为null,则它可以具有特殊的"delete“语义,以防您为某个主题(http://kafka.apache.org/documentation#compaction)启用日志压缩而不是日志保留策略。

票数 112
EN

Stack Overflow用户

发布于 2019-10-18 20:01:56

后期添加..。如果在一个主题的消费者组中有多个消费者,则指定键,以便同一键上的所有消息都转到相同的分区,对于正确的消息处理顺序非常重要。

如果没有键,同一键上的两个消息可能会去往不同的分区,并被组中的不同使用者无序地处理。

票数 26
EN

Stack Overflow用户

发布于 2020-01-29 11:39:21

另一个有趣的用例

我们可以使用Kafka主题中的键属性来发送user_ids,然后可以插入一个消费者来获取流事件(存储在值属性中的事件)。这可以允许您处理任何用户事件序列的最大历史记录,以便在您的机器学习模型中创建特征。

我还得找出这是不是可能。我会不断更新我的答案,并提供更多详细信息。

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40872520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档