Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 向现有卡夫卡主题添加分区对生产者/消费者行为的影响_Apache Kafka - Fatal编程技术网

Apache kafka 向现有卡夫卡主题添加分区对生产者/消费者行为的影响

Apache kafka 向现有卡夫卡主题添加分区对生产者/消费者行为的影响,apache-kafka,Apache Kafka,将新分区添加到现有主题时,生产者和消费者如何适应此更改,以及将新分区分配给代理的策略是什么?对于生产者 生产者将非常无缝地适应分区的添加 假设您目前有5个分区,并且您决定再添加2个分区—如果您的生产者正在为中的分区生成数据: 一种循环方式,现在它将把消息循环到7个分区,而不是5个分区。 键控方式,即具有相同键的消息在同一分区中结束,然后将调整键到分区的映射。 面向消费者 另一方面,消费者可能无法适应,具体行为将在很大程度上取决于消费者群体中的实际设置 让我们使用与上面相同的示例,即一个具有5个分

将新分区添加到现有主题时,生产者和消费者如何适应此更改,以及将新分区分配给代理的策略是什么?

对于生产者 生产者将非常无缝地适应分区的添加

假设您目前有5个分区,并且您决定再添加2个分区—如果您的生产者正在为中的分区生成数据:

一种循环方式,现在它将把消息循环到7个分区,而不是5个分区。 键控方式,即具有相同键的消息在同一分区中结束,然后将调整键到分区的映射。 面向消费者 另一方面,消费者可能无法适应,具体行为将在很大程度上取决于消费者群体中的实际设置

让我们使用与上面相同的示例,即一个具有5个分区的主题,您将再添加2个分区,您的消费者将:

如果使用者的功能是通用的,并且在语义上不依赖于任何特定的键,则自适应,例如: 如果您使用的是,并且每个使用者都可以从任何分区自由使用 如果您正在使用中所述的FailoverAssignor,并且组中只有一个消费者会主动消费 可能会有更多这样的场景。。。 如果使用者实例的功能严重依赖于传入消息的键,即使用者实例必须仅使用特定键来使用消息,则不适用。对于此类主题,强烈建议在创建时设置分区,避免以后调整大小。 我刚刚尝试用上面的例子来支持这个解释,但是可能会有更多的场景

希望这有帮助

生产者 生产者将非常无缝地适应分区的添加

假设您目前有5个分区,并且您决定再添加2个分区—如果您的生产者正在为中的分区生成数据:

一种循环方式,现在它将把消息循环到7个分区,而不是5个分区。 键控方式,即具有相同键的消息在同一分区中结束,然后将调整键到分区的映射。 面向消费者 另一方面,消费者可能无法适应,具体行为将在很大程度上取决于消费者群体中的实际设置

让我们使用与上面相同的示例,即一个具有5个分区的主题,您将再添加2个分区,您的消费者将:

如果使用者的功能是通用的,并且在语义上不依赖于任何特定的键,则自适应,例如: 如果您使用的是,并且每个使用者都可以从任何分区自由使用 如果您正在使用中所述的FailoverAssignor,并且组中只有一个消费者会主动消费 可能会有更多这样的场景。。。 如果使用者实例的功能严重依赖于传入消息的键,即使用者实例必须仅使用特定键来使用消息,则不适用。对于此类主题,强烈建议在创建时设置分区,避免以后调整大小。 我刚刚尝试用上面的例子来支持这个解释,但是可能会有更多的场景


希望这有帮助

谢谢,但是如何将变更通知给生产者和消费者呢?对于conumsers,如果修改,是否会自动导致配对分配?在生产者方面,您可能会看到一些警告,表明已触发重新平衡,但不应导致任何数据丢失。在使用者端,是的,分区将被重新分配,并且有一个名为onPartitionsAssigned的方法被撤销。正是由于重新分配,使用者端至关重要,因为使用者的语义功能可能会受到影响。太好了。我很高兴你觉得它有用。感谢您的确认谢谢,但是如何将变更通知给生产者和消费者呢?对于conumsers,如果修改,是否会自动导致配对分配?在生产者方面,您可能会看到一些警告,表明已触发重新平衡,但不应导致任何数据丢失。在使用者端,是的,分区将被重新分配,并且有一个名为onPartitionsAssigned的方法被撤销。正是由于重新分配,使用者端至关重要,因为使用者的语义功能可能会受到影响。太好了。我很高兴你觉得它有用。感谢您的确认