Kafka Streams 使用的 RocksDB fileanme 含义

RocksDB fileanme meaning used by Kafka Streams

/tmp/streams-my-application-id下 我找到了 RocksDB 使用的文件。我的目的是通过 du -h 检查文件大小。

看到文件名,很好奇文件名的含义。文件名是什么意思?我想这与 Kafka Streams 任务和分区有关。

前缀0和1是表示使用的主题数吗,后面是使用的分区?

这个KafkaStreams应用只是简单地使用KStream-KTable连接了两个topic,一个topic重新分区归约到KTable中。

8,0K    ./0_2
8,0K    ./0_1
3,1M    ./1_2/rocksdb/KSTREAM-REDUCE-STATE-STORE-0000000002
3,1M    ./1_2/rocksdb
3,1M    ./1_2
3,0M    ./1_0/rocksdb/KSTREAM-REDUCE-STATE-STORE-0000000002
3,0M    ./1_0/rocksdb
3,1M    ./1_0
3,0M    ./1_1/rocksdb/KSTREAM-REDUCE-STATE-STORE-0000000002
3,0M    ./1_1/rocksdb
3,0M    ./1_1
8,0K    ./0_0

文件名是使用 sub-topology 和分区号派生的。

通常 KStream 应用程序被分成 sub-topologies 个(即 Sub-topology 0,1,2....等)。在使用有状态转换时,state-store 目录使用 参考以生成如下所示的目录和文件名:

<sub-topology-number>_<partition_number>

所以第一个数字代表sub-topology,第二个代表分区号

8,0K    ./0_2    //directory
8,0K    ./0_1    // diretory
3,1M    ./1_2/rocksdb/KSTREAM-REDUCE-STATE-STORE-0000000002      

KSTREAM-REDUCE-STATE-STORE-0000000002格式为

<Processor Node Type>-<Processor Node number>