Kafka Streams - 在 Streams App 中存储在内存和磁盘中的内容
Kafka Streams - what is stored in memory and disk in Streams App
我是 Kafka Streams 的新手,我一直在阅读 documentation 如何设置 Kafka Streams 应用程序。
不过我不清楚数据是如何处理的——什么存储在内存中,什么存储在磁盘上。我在某处看到 RocksDB 被提及,但在流文档中没有。
我要解决的问题如下。我有 2 个 Kafka 主题,都是键值存储类型,为每个键保留最旧的值。在我的流应用程序中,我想连接两个主题并将连接输出回 kafka,稍后可以由某些接收器使用。我担心的是不清楚连接是如何执行的。这两个主题都有 GB 的数据,因此不可能适合 Streams 应用内存。
您可以阅读每个主题 KTable
并执行 table-table 加入:
KTable table1 = builder.table("topic-1");
KTable table2 = builder.table("topic-2");
KTable joinResult = table1.join(table2, ...);
joinResult.to("output-topic");
详情请见:
http://docs.confluent.io/current/streams/developer-guide.html#ktable-ktable-join
另请查看示例:https://github.com/confluentinc/examples/tree/3.3.0-post/kafka-streams
对于运行时,这两个主题都将在 RocksDB 状态存储中具体化。 RocksDB 能够溢出到磁盘。另请注意,单个 RocksDB 实例只需要保存单个输入分区的数据。比较 http://docs.confluent.io/current/streams/architecture.html#parallelism-model
我是 Kafka Streams 的新手,我一直在阅读 documentation 如何设置 Kafka Streams 应用程序。
不过我不清楚数据是如何处理的——什么存储在内存中,什么存储在磁盘上。我在某处看到 RocksDB 被提及,但在流文档中没有。
我要解决的问题如下。我有 2 个 Kafka 主题,都是键值存储类型,为每个键保留最旧的值。在我的流应用程序中,我想连接两个主题并将连接输出回 kafka,稍后可以由某些接收器使用。我担心的是不清楚连接是如何执行的。这两个主题都有 GB 的数据,因此不可能适合 Streams 应用内存。
您可以阅读每个主题 KTable
并执行 table-table 加入:
KTable table1 = builder.table("topic-1");
KTable table2 = builder.table("topic-2");
KTable joinResult = table1.join(table2, ...);
joinResult.to("output-topic");
详情请见: http://docs.confluent.io/current/streams/developer-guide.html#ktable-ktable-join 另请查看示例:https://github.com/confluentinc/examples/tree/3.3.0-post/kafka-streams
对于运行时,这两个主题都将在 RocksDB 状态存储中具体化。 RocksDB 能够溢出到磁盘。另请注意,单个 RocksDB 实例只需要保存单个输入分区的数据。比较 http://docs.confluent.io/current/streams/architecture.html#parallelism-model