Kafka在新闻提要中的传递机制

mspsb9vt  于 2021-06-07  发布在  Kafka
关注(0)|答案(2)|浏览(270)

我是否可以为不同类型的更新创建名为update\u i的主题,并在kafka mq中使用user\u id对它们进行分区?我已经通过confluent.io浏览了这篇文章:https://www.confluent.io/blog/how-to-choose-the-number-of-topicspartitions-in-a-kafka-cluster/ . 另外,我知道我不能创建一个分区数量动态的主题。这两个事实(kafka分区的post和static数量)。可供选择的交付机制是什么?

ss2ws0br

ss2ws0br1#

我是否可以为不同类型的更新创建名为update\u i的主题,并在kafka mq中使用user\u id对它们进行分区?
如果我理解正确的话,答案是肯定的。
简而言之,您需要做的是:
主题配置:确定主题所需的分区数。通常,分区的数量是基于(1)传入数据的预期规模/体积(即缩放的写入侧)和/或(2)在使用消息进行处理时所需的并行性(即缩放的读取侧)来确定的。看到了吗https://www.confluent.io/blog/how-to-choose-the-number-of-topicspartitions-in-a-kafka-cluster/ 详情。
向这些Kafka主题(又名“Kafka生产者”的一方)写入消息:在Kafka中,消息是键值对。在您的情况下,您可以将消息键设置为 user_id . 然后,当使用kafka的默认“partitioner”时,相同消息键的消息(这里: user_id )将自动发送到同一个分区--这是您想要实现的。

5gfr0r5j

5gfr0r5j2#

作为一个可能的解决方案,我建议创建一些分区,然后使用以下规则设置生产者来选择分区

user_id mod <number_of_partitions>

这将允许您保持特定用户id的消息顺序。
然后,如果您需要一个仅处理特定用户id的消息的使用者,那么您可以编写一个(低级)使用者,该使用者将读取特定分区并仅处理为特定客户发送的消息,而忽略所有其他消息。

相关问题