Java 在ApacheKafka中存储图像?

Java 在ApacheKafka中存储图像?,java,apache-kafka,Java,Apache Kafka,卡夫卡的大用户(如LinkedIn)是否在卡夫卡中存储上传的图像?我喜欢将所有内容放入日志的结构简单,但我担心它在实践中可能不可行。理论上没有限制,因为您可以轻松地将图像作为二进制存储在Kafka队列中。但可能还有其他问题。。我会想一想的 消费者配置中有一个message.max.bytes参数,默认值为1000000。这样做实际上是为了防止代理耗尽内存,因为消费者没有流式传输消息的选项,必须分配内存才能读取消息。一种解决方法是压缩卡夫卡中的消息以节省空间 我能找到的最合适的条件是通过传递发送和

卡夫卡的大用户(如LinkedIn)是否在卡夫卡中存储上传的图像?我喜欢将所有内容放入日志的结构简单,但我担心它在实践中可能不可行。

理论上没有限制,因为您可以轻松地将图像作为二进制存储在Kafka队列中。但可能还有其他问题。。我会想一想的

消费者配置中有一个
message.max.bytes
参数,默认值为
1000000
。这样做实际上是为了防止代理耗尽内存,因为消费者没有流式传输消息的选项,必须分配内存才能读取消息。一种解决方法是压缩卡夫卡中的消息以节省空间

我能找到的最合适的条件是通过传递发送和接收缓冲区的预分配来编写自己的客户机实现,通过Kafka提供零拷贝文件传输,如讨论中所示


您需要检查是否有可能做出这样的努力来达到同样的目的。

只是好奇,为什么您说消费者没有选择流式传输消息?Kafka Consumer示例建议只使用KafkaStream,这绝对是一个流。我使用过一个消费程序,它的获取大小非常大,大约为50MB(您可以使用控制台消费程序进行尝试),内存消耗不会随着获取/消息大小的增加而明显增加。你有没有其他的经验?或者您的意思是,您需要在内存中一次至少保存一条消息,在这种情况下,您确实会看到内存使用率增加,但这是不可避免的。代理需要分配缓冲区以读取消息。在使用者配置页面中,
fetch.message.max.bytes
属性显示在每个fetch请求中尝试获取每个主题分区的消息的“是”数。这些字节将被读入每个分区的内存,因此这有助于控制使用者使用的内存。