Kafka Streams - 它如何在内部保存状态

Kafka Streams - How does it save the state internally

互联网上有很多关于 Kafka Streams 使用的文章,但几乎没有关于它在内部是如何完成的。

  1. 它是否在标准集之外使用了 Kafka 内部的任何功能(让我们称之为 "standard" librdkafka 实现)?
  2. 如果将状态保存在 RocksDB(或任何自定义 StateStore)中,它如何保证状态保存和提交在一个事务中?
  3. 在压缩日志中保存状态时的情况相同(提交和更新日志应该在一个事务中)。

谢谢。

我通过结合这里几个线程的信息找到了答案。

  1. 它使用事务(请参阅 librdkafka ) which are unsupported(尚未)。
  2. 它并不真正依赖 RocksDB,而是将状态更改保存到提交日志中(参见 )。
  3. 它使用上述交易来完成。