apachekafka中的负载平衡

ogsagwnx  于 2021-06-08  发布在  Kafka
关注(0)|答案(2)|浏览(403)

我是新来的ApacheKafka和它玩。如果我有2个代理和一个带有4个分区的主题,并且假设我的一个代理负载很重,那么kafka会负责平衡从生产者到另一个自由代理的传入流量吗?如果是这样,怎么做?

oxalkeyp

oxalkeyp1#

kafka producer倾向于在所有分区之间平均分布消息,除非您重写此行为,否则您需要查看四个分区是否在代理之间平均分布。
这取决于你所说的“其中一个经纪人负载过重”是什么意思。如果是因为该主题或该集群有任何其他主题(例如消费者偏移量)。
您可以使用带有kafka的cli工具或类似yahoo kafka manager的ui来选择分区所在的代理。

1zmg4dgp

1zmg4dgp2#

如果您有多个分区,则是生产者的责任/选择将其发送到哪个分区。
制作者将数据发布到他们选择的主题。生产者负责选择要分配给主题中的哪个分区的消息。这可以简单地以循环方式来平衡负载,也可以根据某种语义划分函数(比如基于消息中的某个键)来完成。链接
在kafka producer中,可以指定一个分区键来指示消息的目标分区。默认情况下,使用基于散列的分区器来确定给定密钥的分区id,人们也可以使用自定义分区器。减少开口插座的#,单位为0.8.0(https://issues.apache.org/jira/browse/kafka-1017),当分区键未指定或为空时,生产者将选择一个随机分区并在切换到另一个分区之前将其保留一段时间(默认值为10分钟)。链接
如果指定要将数据放入哪个分区,它将始终进入该特定分区。如果不指定,生产者可以将其发送到任何分区。kafka代理从不在内部移动或平衡消息/分区。
我相信这个决定是为kafka分区中消息的排序提供一定的保证。

相关问题