apache-kafka - Kafka 文件流

标签 apache-kafka kafka-consumer-api apache-kafka-streams

考虑以下场景。我有一个用于减震的 Kafka 代理和很多客户,他们向我发送 user1.rar 文件,分为文件 user1.r01,user1.r02 ...(每个 128KB)。正如预期的那样,消费到一个主题中效果很好。问题是我需要在拓扑下游解压缩文件并将解压缩的结果流式传输到最终存储。

不好的部分是我没有一个操作存储来为一个用户存储所有的 rar。 kafka有没有办法精简一个topic里面的文件,这样我就可以做stream unpacking了。 我很害怕如果

  • 我使用一个消费者,我会压垮它的 RAM,一旦 1000 个用户开始流式传输,rXX 文件就会在主题中混淆
  • 如果我使用多个消费者,我认为 kafka 没有“智能路由”,所以我只能在一个消费者中读取一些键(与一个用户/用户组相关)+ 我将如何进行重新平衡 + 重置,当其中一位消费者去世时...

有什么模式,如何处理这种情况?

谢谢!

最佳答案

我对这一切还很陌生,但我现在已经稍微了解了 Kafka,如果我正确理解了 Kafka 文档,您将需要使用连接器/任务(https://kafka.apache.org/documentation/#connect_overview - 请参阅第 8.3 章),更具体地说,SourceConnector/SourceTasks,因为您可以为连接器定义最大数量的任务(“tasks.max”),结合 SourceConnector/SourceTasks 的轮询性质,您可以防止服务器过载。 如果我对文档的理解正确,则应在处理任务后将其删除。

我对这一切真的很陌生,但我希望这对您有所帮助。

关于apache-kafka - Kafka 文件流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46420775/

相关文章:

java - Kafka Stream 在时间窗口上计数不报告零值

java - 使用spring创建多个kafka主题

apache-kafka - 主题分区是否应该在 Kafka 集群中的所有代理节点之间复制?

apache-kafka-streams - KStream 和 KTable 之间的时间语义

apache-kafka - 卡夫卡 : sendOffsetsToTransaction with multiple consumers

apache-kafka-streams - 卡夫卡流: Dynamically Configure RocksDb

apache-kafka - 卡夫卡-avro-控制台-消费者 : Specify truststore location for schema-registry

mongodb - 多个 Oracle 表的单个 kafka 主题

Spring 启动卡夫卡: Unable to start consumer due to NoSuchBeanDefinitionException

java - 了解用于 Java 的 Kafka 消费者 API