使用 Confluent Replicator 在每个分区中进行排序保证
Ordering guarantee in each partition using Confluent Replicator
我们的系统要求在 Kafka 主题分区内维护记录的正确顺序和排序保证。
正如在我们的测试 运行s 中观察到的,Kafka Mirror 不提供分区中的排序保证。记录倾向于在源和目标集群主题之间洗牌。
我们计划使用 Confluent Replicator 进行跨集群数据复制。在 Confluent 社区版 5.3.1 的测试 运行 中,观察到源主题和目标主题保持完全相同的分区及其各自的记录数。 (复制器在单线程配置上 运行)
但是,Replicator 是否保证分区内记录的准确排序?
如果我增加复制线程的数量以获得并行性和更好的吞吐量,它是否仍能保证顺序(即使在一个线程失败的情况下)?
MirrorMaker (1.0) 将使用 DefaultPartitioner 对数据进行重新分区,因此您获得 "out of order data" 的唯一方法是让生产者覆盖其分区程序。此外,MirrorMaker 不保证目标主题与源主题具有相同数量的分区或配置
Replicator 和 MirrorMaker 2.0(Kafka 2.4.0 可用)保留输入分区计数和主题配置。与任何其他消费群体一样,订单得到保证。但是,由于网络传输错误中的边缘情况,可能会在交付过程中多次生成记录。
增加连接器任务将向组中添加更多消费者,同样,与任何其他应用程序一样,输入和输出分区应该匹配
我们的系统要求在 Kafka 主题分区内维护记录的正确顺序和排序保证。 正如在我们的测试 运行s 中观察到的,Kafka Mirror 不提供分区中的排序保证。记录倾向于在源和目标集群主题之间洗牌。
我们计划使用 Confluent Replicator 进行跨集群数据复制。在 Confluent 社区版 5.3.1 的测试 运行 中,观察到源主题和目标主题保持完全相同的分区及其各自的记录数。 (复制器在单线程配置上 运行)
但是,Replicator 是否保证分区内记录的准确排序? 如果我增加复制线程的数量以获得并行性和更好的吞吐量,它是否仍能保证顺序(即使在一个线程失败的情况下)?
MirrorMaker (1.0) 将使用 DefaultPartitioner 对数据进行重新分区,因此您获得 "out of order data" 的唯一方法是让生产者覆盖其分区程序。此外,MirrorMaker 不保证目标主题与源主题具有相同数量的分区或配置
Replicator 和 MirrorMaker 2.0(Kafka 2.4.0 可用)保留输入分区计数和主题配置。与任何其他消费群体一样,订单得到保证。但是,由于网络传输错误中的边缘情况,可能会在交付过程中多次生成记录。
增加连接器任务将向组中添加更多消费者,同样,与任何其他应用程序一样,输入和输出分区应该匹配