Kafka使用者-使用者进程和线程与主题分区之间的关系是什么

Kafka使用者-使用者进程和线程与主题分区之间的关系是什么,第1张

Kafka使用者-使用者进程和线程与主题分区之间的关系是什么

使用者组可以运行多个使用者实例(具有的多个进程

group-id
)。在使用时, 每个分区仅由组中的一个使用方实例使用

例如,如果您的主题包含2个分区,并且您

group-A
使用2个使用方实例启动一个使用方组,则每个使用方实例将使用该主题的特定分区中的消息。

如果您使用不同的组ID

group-A
和启动相同的2个使用者,
group-B
则该主题的两个分区中的消息将广播到其中每个。因此,在这种情况下,在其下运​​行的使用者实例
group-A
将具有来自该主题的两个分区的消息,这同样适用
group-B

在他们的文档中阅读有关此内容的更多信息

编辑 :根据您的评论,

我想知道在相同的流程中拥有2个使用者线程而不是2个使用者进程(两种情况下的组相同)之间的有效区别是什么?

使用者

group-id
在整个集群中是相同/全局的。假设您已经开始使用2个线程启动一个进程,然后使用具有2个线程的相同groupId生成另一个进程(可能在另一台机器上),那么kafka将添加这2个新线程以使用该主题中的消息。因此,最终将有4个线程负责同一主题的消费。然后,Kafka将触发重新平衡,以将分区重新分配给线程,因此可能发生的情况是,对于线程正在消耗的特定分区,
T1of process P1
可以将其分配给线程使用
T2 of process P2
。以下几行摘自Wiki页面

当使用相同的使用者组名称启动新进程时,Kafka将将该进程的线程添加到可用于消耗主题并触发“重新平衡”的线程集中。在重新平衡期间,Kafka将为可用线程分配可用分区,可能会将一个分区移至另一个进程。如果您混合使用新旧业务逻辑,则某些消息可能会传递到旧逻辑。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5139572.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存