首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否可以创建一个具有动态分区计数的kafka主题?

是否可以创建一个具有动态分区计数的kafka主题?
EN

Stack Overflow用户
提问于 2015-09-24 12:40:35
回答 1查看 17.2K关注 0票数 25

我正在使用kafka流的网页访问事件的网站用户到一个分析服务。每个事件将包含消费者的下列详细信息:

  • 用户id
  • 用户的IP地址

我需要很高的吞吐量,所以我决定用分区键将主题划分为userId-ipAddress ie。

对于userId 1000和ip地址10.0.0.1,事件的分区键为"1000-10.0.0.1“。

在这个用例中,分区键是动态的,所以在创建主题时预先指定分区的数量。可以用动态分区计数在kafka中创建主题吗?

使用这种分区是一种很好的实践,还是有其他方法可以实现呢?

EN

回答 1

Stack Overflow用户

发布于 2015-09-26 08:04:16

用动态分区计数创建Kafka主题是不可能的。创建主题时,必须指定分区的数量。以后可以使用复制工具手动更改它。

但我不明白为什么首先需要动态分区计数。分区键与分区数无关。您可以在10个分区或1000个分区中使用分区键。当你向卡夫卡主题发送信息时,卡夫卡必须将它发送到一个特定的分区。每个分区都是通过它的ID来标识的,而ID只是一个数字。卡夫卡计算出这样的东西

代码语言:javascript
运行
复制
partition_id = hash(partition_key) % number_of_partition

它将消息发送给分区partition_id。如果您的用户比分区多得多,您应该会没事的。更多建议:

  • 使用userId作为分区键。您可能不需要IP地址作为分区密钥的一部分。它有什么好处?通常,您需要来自单个用户的所有消息才能在一个分区中结束。如果您将IP地址作为分区密钥,那么来自单个用户的消息可能会在多个分区中结束。我不知道你的用例,但一般来说,这不是你想要的。
  • 度量处理所有消息所需的分区数。然后创建10倍多的分区。您可以创建比实际需要的更多的分区。卡夫卡不会介意的,也没有表现上的点球。请参阅如何选择Kafka集群中的主题/分区数?

现在,您应该能够处理系统中的所有消息。如果流量增加,您可以添加更多的Kafka代理,并且可以使用复制工具来更改分区的领导者/副本。如果流量增长超过10倍,则必须创建新的分区。

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

https://stackoverflow.com/questions/32761598

复制
相关文章

相似问题

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