当前位置: 首页 > 知识库问答 >
问题:

数据是否跨分区分割?

段干英杰
2023-03-14

我读过Kafka文档,但当有人谈论数据和分区时,我仍然感到困惑。在文档中,我看到客户机将向分区发送消息。然后将消息分区复制到副本(跨代理)。和使用者从分区读取数据。

我有一个有两个分区的主题。假设我有一个生产者,它向分区#1发送消息。但我有两个消费者,一个从分区1读取,另一个从分区2读取。这是否意味着我的分区1将有50%的消息,分区2将有50%的消息。或者,当客户端将数据发送到分区#1时,分区#1应该不仅跨代理复制数据,而且跨分区复制数据?

共有1个答案

夏元明
2023-03-14

关于你的具体例子。。。

如果您的生产者发送消息时消息上没有键,则默认的分区器(在生产者本身中)将应用循环算法将消息发送到分区so:消息1到分区1,消息2到分区2,消息3到分区1,依此类推。这意味着您是对的,分区1将获得50%的消息。因此,从分区1读取的一个消费者将获得50%的已发送消息;另外50%将由另一个使用者从分区2读取。这就是Kafka如何获得更高的吞吐量和处理更多的消费者。需要补充的是,当一个分区有更多副本时,其中一个副本被定义为“leader”,另一个副本被定义为“followers”。信息交换总是通过“领导者”进行的。“追随者”只是复制品。它们用于承载“leader”分区的代理崩溃,而承载“follower”分区的另一个代理被选为“leader”。

我希望这能有所帮助。

 类似资料:
  • 假设答案是,是的,Kafka不会再平衡,那么有什么解决方案可以让Kafka在各种情况下平衡

  • Redisson 仅在集群模式中支持数据分区(分片)。 它使得可以使用整个 Redis 集群的内存而不是单个节点的内存来存储单个数据结构实例。 Redisson 默认将数据结构切分为 231 个槽。槽的数量可在 3 和 16834 之间。槽会一致地分布在所有的集群节点上。这意味着每个节点将包含近似相等数量的槽。如默认槽量(231) 和 4 个节点的情况,每个节点将包含接近 57 个数据分区,而对

  • 问题内容: 我正在研究一些代码,并找到了对的调用。PHP对函数名称是否区分大小写?我记得在某处读过这篇文章,但似乎找不到任何参考。 问题答案: 我在此引用: 注意:函数名称不区分大小写,尽管调用函数通常是一种很好的形式,因为它们出现在声明中。 因此,它看起来像用户定义的函数是不区分大小写,有一个投票下PHP5区分大小写制作功能/对象。

  • 我找不到任何可以添加到Kafka的与配置相关的更改

  • 问题内容: HTML是否区分大小写? 在一个示例中,我正在使用它说: 还是会有所不同(或根本没有)? 问题答案: 否,但是将HTML标记保持小写被认为是一种好习惯。

  • 当我使用Spark从S3读取多个文件时(例如,一个包含许多Parquet文件的目录)- 逻辑分区是在开始时发生,然后每个执行器直接下载数据(在worker节点上)吗?< br >还是驱动程序下载数据(部分或全部),然后进行分区并将数据发送给执行器? 此外,分区是否默认为用于写入的相同分区(即每个文件= 1个分区)?