我是否正确地理解了Kafka Streams状态存储与KS应用示例位于同一位置?例如,如果我的KS应用程序在Kubernetes pod中运行,状态存储位于同一个pod中?在Kubernetes中使用哪种状态存储更好- RocksDB还是内存中?如何在应用程序中配置状态存储的类型?
yeotifhr1#
这取决于您的用例--当您有一个小主题时,有时您可以接受内存存储。但是在大多数情况下,您将默认使用持久存储。宣布一个你会做的:
streamsBuilder.addStateStore( Stores.keyValueStoreBuilder( Stores.persistentKeyValueStore( storeName ), keySerde, valueSerde ) );
字符串如果你想要一个inMemoryStore,用inMemoryKeyValueStore替换第三行。在k8s中运行KafkaStreams应用程序有一些注意事项。首先,仅仅一个pod是不够的。您需要将其作为状态集运行。在这种情况下,您的pod将在特定路径下安装PersistentVolumeClaim。最好将state.dir属性设置为指向该路径的子文件夹。这样,当您的pod关闭时,卷将被保留,当pod重新打开时,它将拥有所有的存储。
inMemoryKeyValueStore
state.dir
1条答案
按热度按时间yeotifhr1#
这取决于您的用例--当您有一个小主题时,有时您可以接受内存存储。但是在大多数情况下,您将默认使用持久存储。宣布一个你会做的:
字符串
如果你想要一个inMemoryStore,用
inMemoryKeyValueStore
替换第三行。在k8s中运行KafkaStreams应用程序有一些注意事项。首先,仅仅一个pod是不够的。您需要将其作为状态集运行。在这种情况下,您的pod将在特定路径下安装PersistentVolumeClaim。最好将
state.dir
属性设置为指向该路径的子文件夹。这样,当您的pod关闭时,卷将被保留,当pod重新打开时,它将拥有所有的存储。