Kafka:多个实例中的单个消费者组

2024-03-11

我正在致力于为我们的应用程序实施基于 Kafka 的解决方案。 根据 Kafka 文档,我的理解是消费者组中的一个消费者(即一个线程)在内部映射到订阅主题中的一个分区。

假设我有一个包含 40 个分区的主题,并且有一个在 4 个实例中运行的高级使用者。我不希望一个实例使用另一实例使用的相同消息。但如果一个实例出现故障,其他三个实例应该能够处理所有消息。

  • 我应该选择每个实例 10 个线程的同一个消费者组吗? - Stackoverflow 表示实例之间的相同消费者组充当传统的同步队列机制

在 Apache Kafka 中,为什么消费者实例不能多于分区? https://stackoverflow.com/questions/25896109/in-apache-kafka-why-cant-there-be-more-consumer-instances-than-partitions

  • 或者我应该为每个实例选择不同的消费者组?

使用简单消费者或低级消费者可以控制分区,但如果一个实例出现故障,其他三个实例将不会处理第一个实例中使用的分区中的消息


首先解释一下消费者和消费者群体的概念,

消费者使用消费者组名称来标记自己,发布到主题的每条记录都会传递到每个订阅消费者组内的一个消费者实例。

这些记录将在消费者组中的消费者实例上进行有效的负载平衡。如果所有消费者实例都有不同的消费者组,那么每条记录都会广播到所有消费者进程。

Kafka 中实现消费的方式是将日志中的分区划分到消费者实例上,以便每个实例在任何时间点都是“公平份额”分区的独占消费者。如果新实例加入该组,它们将从该组的其他成员那里接管一些分区;如果一个实例死亡,它的分区将被分配给剩余的实例。

现在回答您的问题,

1. 我不希望一个实例消费另一实例消费的相同消息。但如果一个实例出现故障,其他三个实例应该能够处理所有消息。

在 Kafka 架构中默认情况下这是可能的。您只需使用相同的消费者组名称标记所有 4 个实例即可。

2. 我应该选择每个实例 10 个线程的同一个消费者组吗?

这样做将为每个线程分配一个 kafka 分区,它将从中消耗数据,这是最佳的。减少线程数量将对消费者实例之间的记录分布进行负载平衡,并且可能会使某些消费者实例过载。

3. 在 Apache Kafka 中,为什么消费者实例的数量不能多于分区的数量?

在 Kafka 中,一个分区只能分配给一个消费者实例。因此,创建比分区更多的消费者实例将导致消费者闲置,他们不会消费来自 kafka 的任何记录。

4. 我应该为每个实例选择不同的消费者组吗?

不会。这将导致记录重复,因为每条记录都将发送到所有实例,因为它们来自不同的消费者组。

希望这能澄清您的疑虑。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kafka:多个实例中的单个消费者组 的相关文章

  • Android 中的 java.util.Observable 是线程安全的吗?

    Android 中的 java util Observable 是线程安全的吗 这文档 http developer android com reference java util Observable html说只有deleteObser
  • 在此代码中,Runnable 未实例化。为什么?

    Runnable cannot instantiate public class Thread4 public static void main String args Thread t1 new Thread new Runnable R
  • 最终字段可能尚未/已经初始化[重复]

    这个问题在这里已经有答案了 可能的重复 如何处理抛出检查异常的静态最终字段初始值设定项 https stackoverflow com questions 1866770 how to handle a static final field
  • AWS SDK 2 承担角色

    Bean public DynamoDbClient amazonDynamoDB final AssumeRoleRequest assumeRoleRequest AssumeRoleRequest builder roleSessio
  • 外部实体更改后索引不更新

    我目前正在开发一个项目 使用 JPA 2 1 保存数据并使用 hibernate search 4 5 0 final 搜索实体 映射类和索引后 搜索工作正常 但是 当我更改值时描述B 类从 someStr 到 anotherStr 数据库
  • 如何使用 Swipe 视图实现 Android TabLayout 设计支持库

    我将使用 android TabLayout 设计支持库 但我不知道如何使用滑动视图 这是我的代码 XML
  • 如何在 Python 中加密并在 Java 中解密?

    我正在尝试在 Python 程序中加密一些数据并将其保存 然后在 Java 程序中解密该数据 在Python中 我像这样加密它 from Crypto Cipher import AES KEY 1234567890123456789012
  • Java:不使用 Arrays.sort() 对整数数组进行排序

    这是我们 Java 课程的练习之一中的说明 首先 我想说我 做了我的功课 我不仅仅是懒惰地请 Stack Overflow 上的人帮我回答这个问题 在所有其他练习中 这个特定项目一直是我的问题 因为我一直在努力寻找 完美的算法 编写JAVA
  • 如何构建和使用 TimeSeriesCollections

    我想在图表的 X 轴上显示一些日期 并且here https stackoverflow com questions 5118684 jfreechart histogram with dates据说我必须使用 TimeSeriesColl
  • Hazelcast:连接到远程集群

    我们有一组 Hazelcast 节点 全部运行在一个远程系统 具有许多节点的单个物理系统 上 我们希望从外部客户端连接到该集群 一个 Java 应用程序 它使用如下代码连接到 Hazelcast ClientConfig clientCon
  • 如何将测试类打包到jar中而不运行它们?

    我正在努力将我的测试类包含到 jar 包中 但不运行它们 经过一番谷歌搜索后 我尝试过mvn package DskipTests 但我的测试类根本没有添加到 jar 中 有任何想法吗 如果您遵循 Maven 约定 那么您的测试类位于src
  • 按名称获取 ArrayList

    这是正确的获取方式吗ArrayList
  • 如何从 Trie 中检索给定长度的随机单词

    我有一个简单的 Trie 用来存储大约 80k 长度为 2 15 的单词 它非常适合检查字符串是否是单词 但是 现在我需要一种获取给定长度的随机单词的方法 换句话说 我需要 getRandomWord 5 来返回 5 个字母的单词 所有 5
  • Java 常量枚举[重复]

    这个问题在这里已经有答案了 可能的重复 理解 Java 中的枚举 https stackoverflow com questions 1419835 understanding enums in java 为什么我们应该使用枚举而不是 Ja
  • Java 中通用方法参数的 getClass()

    以下 Java 方法无法编译
  • 在片段之间切换时底部导航栏会向下推

    在我的活动中 我有一个底部导航栏和框架布局来显示片段 一切正常 但问题是当我开始按顺序从 1 4 移动时 底部导航栏保持在其位置 但当我突然从 4 跳到2 然后底部导航栏就会超出屏幕 当再次单击同一项目时 它就会回到正常位置 该视频将清楚地
  • 应用程序中空指针异常[重复]

    这个问题在这里已经有答案了 我正在尝试在我的应用程序中实施应用程序内计费 我写了这段代码 public class Settings extends PreferenceFragment ServiceConnection mService
  • 动态创建 JSON 对象

    我正在尝试使用以下格式创建 JSON 对象 tableID 1 price 53 payment cash quantity 3 products ID 1 quantity 1 ID 3 quantity 2 我知道如何使用 JSONOb
  • 如何在apache POI中读取excel文件的准确单元格内容

    当我读取单元格的内容时 例如如果它是日期格式 它会转换为另一个值 例如 12 31 2099 gt 46052 和 50 00 gt 50 和 50 00 gt 0 5 但我想要的是获取每个单元格的确切字符串值 我的代码是这样的 cell
  • Swing:创建可拖动组件...?

    我在网上搜索了可拖动 Swing 组件的示例 但我发现示例不完整或不起作用 我需要的是一个摇摆组件那可以是dragged通过鼠标 在另一个组件内 被拖拽的时候 应该已经 改变它的位置 而不仅仅是 跳 到目的地 我很欣赏无需非标准 API 即

随机推荐