RocksDB生成的文件夹是什么

时间:2019-12-12 11:39:45

标签: apache-kafka-streams rocksdb

在kubernetes容器中,我已经为我的kafka流应用程序配置了rocksdb

containers:
  ...
  volumeMounts:
            - mountPath: /tmp/state
              name: state-volume
volumes:
  - name: state-volume
    emptyDir:
    medium: Memory

部署后,如果我转到位置cd /tmp/state/my-service 我看到了十几个文件夹。例如。 0_105、0_107、0_9 等。如果我转到这些文件夹之一,例如cd /tmp/state/my-service/0_105/rocksdb/state我看到了实际的.sst文件。 在每个 0 _ *文件夹中,都有多个sst文件,这就是rocksdb如何分割我想的文件密钥。但是这些 0 _ * 文件夹会做什么,以及它们如何按原样拆分?

1 个答案:

答案 0 :(得分:1)

Kafka Streams根据您的程序结构和输入主题分区的数量创建“任务”。您看到的目录是任务目录,允许每个任务以隔离的方式在本地存储其状态。

每个任务都有一个任务ID Y_Z,用作任务目录名称。第一个数字是子目录ID,第二个数字基本上是输入的分区号。

您可以通过Topology#describe()描述拓扑来查看生成了哪些子拓扑(如果需要,您可以调用print'TopologyDescription'到stdout)。