如果 1 个消费者组中有 1 个主题和 1 个消费者,但 1 个消费者在多台机器上运行,Kafka 将如何管理事件顺序

问题描述 投票:0回答:1

最近给我一个情况:

  1. 事件正在发布到 1 个主题
  2. 鉴于我们在 1 个消费者组中有 1 个消费者。
  3. 为了保持生产消息和消费消息的速度,我们在 10 台不同的机器上运行了 10 个 coneumer 实例。

用给定的数据换句话说,假设我们有 1 个消费者以每秒 1 万次的速率向具有 1 个分区的主题生成事件。我们有 1 个消费者组和 1 个消费者但是我们在 10 台机器上有 10 个相同消费者的实例以满足消费(因为一个消费者只能消费 1000/秒)并提高消费者端的性能。

问题:1. 我们如何确保每个实例不会获得相同的记录?

问题:2.我们将如何确定订单?

asp.net-core apache-kafka microservices publish-subscribe event-driven-design
1个回答
1
投票

对于kafka主题架构,消息排序是在分区级别上保证的,而不是在整个主题上。

所以如果你有一个多分区主题和一个多线程消费者组,那么顺序将只在消费者线程的基础上得到保证,而不是整个组。

由于每个线程占用 1 个或多个分区(取决于分区数与消费者线程数),因此每个线程只知道其分区内的消息,仅此而已。

我建议您浏览以下资源以深入了解有关消费者群体和订购保证的详细信息

© www.soinside.com 2019 - 2024. All rights reserved.