我刚开始探索Kafka。我对Kafka的主题和分区有疑问。假设我们有3台机器x.x.x.1,x.x.x.2,x.x.x.3我们有一个主题测试,它有3个分区和3个副本集作为1,2,3以上的3台机器。我们是否有可能将第一个分区数据写入机器1。第二分区数据到机器2,第三分区数据总是到第三台机器?如果可能的话怎么办?
qhhrdooz1#
分区分配的工作方式如下。从一个随机代理id(不能是x.x.x.1,而是x.x.x.3)开始,将分区前导0分配给这样的代理,分区前导1分配给下一个代理,依此类推。因此,例如,如果选择了代理x.x.x.2,那么分区引线0将在它(2)上,分区引线1在x.x.x.3上,最后分区引线2在x.x.x.1上。关于跟随者副本,它们的分配是从开始代理增加一个:在这个示例中,分区0的第一个跟随者将在x.x.x.3上,第二个跟随者将在x.x.x.1上。分区1和分区2的跟随副本也会发生同样的情况。通过这种方式,复制允许ha,并且在集群中平衡通信量。顺便说一句,有一个名为“kafka reassign partitions.sh”的工具,您可以使用它通过json指定首选的分配。您可以在这里找到更多信息:https://cwiki.apache.org/confluence/display/kafka/replication+tools#replicationtools-4.重新分配
1条答案
按热度按时间qhhrdooz1#
分区分配的工作方式如下。从一个随机代理id(不能是x.x.x.1,而是x.x.x.3)开始,将分区前导0分配给这样的代理,分区前导1分配给下一个代理,依此类推。因此,例如,如果选择了代理x.x.x.2,那么分区引线0将在它(2)上,分区引线1在x.x.x.3上,最后分区引线2在x.x.x.1上。关于跟随者副本,它们的分配是从开始代理增加一个:在这个示例中,分区0的第一个跟随者将在x.x.x.3上,第二个跟随者将在x.x.x.1上。分区1和分区2的跟随副本也会发生同样的情况。通过这种方式,复制允许ha,并且在集群中平衡通信量。顺便说一句,有一个名为“kafka reassign partitions.sh”的工具,您可以使用它通过json指定首选的分配。您可以在这里找到更多信息:https://cwiki.apache.org/confluence/display/kafka/replication+tools#replicationtools-4.重新分配