首页 > 解决方案 > 如果有多个服务器访问单个主题,kafka 是否确保每条记录只处理一次

问题描述

我将拥有 10 台服务器来访问单个 kafka 主题。我应该如何确保每个服务器(消费者)都有不同的记录要由服务器处理。我将运行 10 个或更多我的代码实例。因此,每个实例都将充当消费者。

标签: apache-kafka

解决方案


根据 Kafka 消费者组协议,您可以保证不会在同一个消费者组之间共享两个分区。

这意味着如果单个主题上有 10 个以上的分区,并且 10 个服务器中的每一个共享相同的group.id消费者设置,那么每个服务器都会收到不同的事件,尽管不一定是唯一的事件

如果主题中的分区少于 10 个,那么在其他服务器之一崩溃之前,您的空闲服务器不会读取任何内容。

关于恰好一次,您必须禁用自动提交,自己管理偏移量管理,并查看有关事务生产者的文档并查看有关isolation.level消费者设置的文档...否则,您将至少获得一次交付


推荐阅读