Kafka Streams RocksDB大州

dwbf0jvd  于 2022-10-07  发布在  Kafka
关注(0)|答案(2)|浏览(206)

在使用Kafka Streams时,可以在RocksDB中保留大状态吗?我们计划使用RocksDB作为一个事件存储库,在最初的时间内举办数十亿次活动。

t98cgbkg

t98cgbkg1#

主要的限制是磁盘空间,所以这是可以做到的,但如果应用程序因为任何原因崩溃,你可能需要等待一段时间,等待应用程序重建其状态。

o75abkj4

o75abkj42#

我不能评论,所以我会在这里“回答”。

是的,您可以在那里存储许多状态,但有一些考虑事项:

  • 整个状态也将在ChangeLog主题上复制,这意味着您的代理将需要有足够的磁盘空间来存储它。请注意,KIP-405(分层存储)不会缓解这一问题,因为分层存储不适用于压缩主题。

  • 正如@OneCricketeer提到的那样,如果发生崩溃,重建国家可能需要很长时间。但是,您可以通过多种方式缓解它:

  • 使用持久化存储,在有权访问同一块磁盘的节点上重启应用程序(K8S中的StatefulSet+PersistentVolume有效)。

  • 在只有一次的语义中,在不干净的关机时执行KIP-844之前,状态仍将从头开始重建。但一旦该PR被合并,那么只需要重放一小部分数据。

  • 有备用副本。一旦Kafka Streams示例崩溃,它们将在消费者会话超时到期时立即启用故障转移。

相关问题