apache-kafka - 如果有多个服务器访问单个主题,kafka 是否确保每条记录只处理一次
问题描述
我将拥有 10 台服务器来访问单个 kafka 主题。我应该如何确保每个服务器(消费者)都有不同的记录要由服务器处理。我将运行 10 个或更多我的代码实例。因此,每个实例都将充当消费者。
解决方案
根据 Kafka 消费者组协议,您可以保证不会在同一个消费者组之间共享两个分区。
这意味着如果单个主题上有 10 个以上的分区,并且 10 个服务器中的每一个共享相同的group.id
消费者设置,那么每个服务器都会收到不同的事件,尽管不一定是唯一的事件
如果主题中的分区少于 10 个,那么在其他服务器之一崩溃之前,您的空闲服务器不会读取任何内容。
关于恰好一次,您必须禁用自动提交,自己管理偏移量管理,并查看有关事务生产者的文档并查看有关isolation.level
消费者设置的文档...否则,您将至少获得一次交付
推荐阅读
- javascript - 在 hubspot 中提交表单时,表单提交被阻止
- openrefine - 替换功能中的特殊字符
- angularjs - 如何在引导程序和 angularjs 中按 id 分组表
- vba - 更好的方法来拆分多行中的单元格值并将这些值连接到下一列中,并使用 Excel-VBA 保持格式不变
- c - Atmel 工作室中的 SPI 初始化
- c++ - 这个 C++ 视频中的这个工厂类有什么意义?
- java - 最终jar中src/main下的Maven包资源文件夹
- r - 使用两个预测变量绘制分类数据图
- ios - IOS/Objective-c:从完成块或闭包异步返回值到调用函数
- jquery - 如何使用动画创建前端/GUI 页面