多个消费者从单个Kafka分区消费

0kjbasz6  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(862)

我在Kafka的文件中读到:
在kafka中实现消耗的方法是将日志中的分区划分到消耗示例上,这样每个示例在任何时间点都是分区“公平共享”的独占消耗者。
kafka只提供分区内记录的总顺序,而不是主题中不同分区之间的顺序。
对于大多数应用程序来说,按分区排序与按键划分数据的能力相结合就足够了。
但是,如果您需要记录的总订单,则可以通过只有一个分区的主题来实现,尽管这意味着每个使用者组只有一个使用者进程。
我在这一页读到以下内容:
使用者从任何单个分区读取,允许您以与消息生成类似的方式扩展消息消耗的吞吐量。
还可以将使用者组织为给定主题的使用者组—组中的每个使用者都从一个唯一的分区进行读取,并且组作为一个整体使用来自整个主题的所有消息。
如果您的使用者比分区多,那么一些使用者将处于空闲状态,因为它们没有可读取的分区。
如果分区多于使用者,则使用者将从多个分区接收消息。
如果用户和分区的数量相等,则每个用户从一个分区按顺序读取消息。
怀疑
这是否意味着单个分区不能被多个使用者使用?我们不能有一个分区和一个消费者组,其中有多个消费者,并使他们都从一个分区消费?
如果单个分区只能由单个使用者使用,我在想为什么要做出这样的设计决定?
如果我需要记录上的总订单,但仍然需要并行使用它呢?它在Kafka是可撤销的吗?或者这样的场景没有意义?

trnvg8h3

trnvg8h31#

在使用者组中,任何时候分区只能由单个使用者使用。不,同一组中不能有两个使用者同时从同一分区消费。
Kafka消费者团体允许多个消费者“有点”像一个实体一样行事。整个组应该只使用一次消息。如果一个组中的多个使用者使用相同的分区,这些记录将被处理多次。
如果需要多次使用分区,请确保这些使用者位于不同的组中。
当处理需要在任何时候按顺序(连续)进行时,只有一个任务要做。如果您有记录1、2和3,并且希望按顺序处理它们,则在处理完消息1之前,您不能执行任何操作。消息2和消息3也是这样。那么你想同时做什么呢?

相关问题