Kafka Streams状态存储-在Kubernetes中运行时使用哪种存储

tsm1rwdh  于 2023-08-02  发布在  Apache
关注(0)|答案(1)|浏览(104)

我是否正确地理解了Kafka Streams状态存储与KS应用示例位于同一位置?例如,如果我的KS应用程序在Kubernetes pod中运行,状态存储位于同一个pod中?在Kubernetes中使用哪种状态存储更好- RocksDB还是内存中?如何在应用程序中配置状态存储的类型?

yeotifhr

yeotifhr1#

这取决于您的用例--当您有一个小主题时,有时您可以接受内存存储。但是在大多数情况下,您将默认使用持久存储。宣布一个你会做的:

streamsBuilder.addStateStore(
            Stores.keyValueStoreBuilder(
                    Stores.persistentKeyValueStore(
                            storeName
                    ),
                    keySerde,
                    valueSerde
            )
    );

字符串
如果你想要一个inMemoryStore,用inMemoryKeyValueStore替换第三行。
在k8s中运行KafkaStreams应用程序有一些注意事项。首先,仅仅一个pod是不够的。您需要将其作为状态集运行。在这种情况下,您的pod将在特定路径下安装PersistentVolumeClaim。最好将state.dir属性设置为指向该路径的子文件夹。这样,当您的pod关闭时,卷将被保留,当pod重新打开时,它将拥有所有的存储。

相关问题