gpt4 book ai didi

apache-kafka - 由于消费者速度慢,Kafka 重新平衡主题中的数据

转载 作者:行者123 更新时间:2023-12-04 03:00:04 25 4
gpt4 key购买 nike

举个例子,假设我有一个包含 4 个分区的主题。我向该主题发送 4k 消息。每个分区获得 1k 条消息。由于外部因素,有 3 个消费者分别处理了他们所有的 1k 条消息。但是,第 4 个分区只能处理 200 条消息,还有 800 条消息需要处理。是否有一种机制允许我“重新平衡”主题中的数据,比如给分区 1-3 200 的分区 4s 数据,让所有具有 200 条消息的分区一个进程?

我不是在寻找向消费者组添加额外节点并让 kafka 平衡分区的方法。

添加了重新分配分区的输出:

当前分区副本分配

{
"version": 1,
"partitions": [
{
"topic": "MyTopic",
"partition": 0,
"replicas": [
0
],
"log_\ndirs": [
"any"
]
},
{
"topic": "MyTopic",
"partition": 1,
"replicas": [
0
],
"log_dirs": [
"any"
]
},
{
"topic": "MyTopic",
"partition": 4,
"replicas": [
0
],
"log_dirs": [
"any"
]
},
{
"topic": "MyTopic",
"partition": 3,
"replicas": [
0
],
"log_dirs": [
"any"
]
},
{
"topic": "MyTopic",
"p\nartition": 2,
"replicas": [
0
],
"log_dirs": [
"any"
]
},
{
"topic": "MyTopic",
"partition": 5,
"replicas": [
0
],
"log_dirs": [
"any"
]
}
]
}

建议的分区重新分配配置

{
"version": 1,
"partitions": [
{
"topic": "MyTopic",
"partition": 3,
"replicas": [
0
],
"log_ dirs": [
"any"
]
},
{
"topic": "MyTopic",
"partition": 0,
"replicas": [
0
],
"log_dirs": [
"any"
]
},
{
"topic": "MyTopic",
"partition": 5,
"replicas": [
0
],
"log_dirs": [
"any"
]
},
{
"topic": "MyTopic",
"partition": 2,
"replicas": [
0
],
"log_dirs": [
"any"
]
},
{
"topic": "MyTopic",
"p artition": 4,
"replicas": [
0
],
"log_dirs": [
"any"
]
},
{
"topic": "MyTopic",
"partition": 1,
"replicas": [
0
],
"log_dirs": [
"any"
]
}
]
}

最佳答案

分区是在生成消息时分配的。它们永远不会在分区之间自动移动。通常,对于每个分区,可以有多个消费者(具有不同的消费者组 ID)以不同的速度消费,因此代理无法根据消费者(组)的速度在分区之间移动消息。不过,您可以尝试一些操作:

  • 更多分区,希望更公平地分配负载(您可以拥有比消费者更多的分区)
  • 让生产者在每条消息上明确设置分区,以在分区之间生成消费者可以更好地应对的分布
  • 让消费者监控他们的延迟并在他们落后时主动取消订阅分区,以便让其他消费者接管负载。

关于apache-kafka - 由于消费者速度慢,Kafka 重新平衡主题中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49986980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com