卡夫卡上的有状态和无状态消费者

时间:2020-09-23 09:56:19

标签: apache-kafka kafka-consumer-api

在Kafka上,消费者可能是有状态的或无状态的,这两种类型的消费者之间有什么区别?为什么有状态使用者在分配新分区时应该重建状态?

1 个答案:

答案 0 :(得分:1)

KafkaConsumer本身只是轮询Kafka主题中的数据,它不能是有状态的或无状态的。但是,您可以有状态或无状态的应用程序。一些简单的例子是

  • 无状态:使用消息并将其放入外部存储
  • 有状态:使用消息,定义一个窗口(=时间间隔)并计算每种标识符的消息数量

在有状态(KafkaStreams)应用程序中,实际状态存储在内部状态存储中,例如RocksDB。如果发生重新平衡(或分配了新的分区),则必须先建立此内部状态存储,以使其与该状态“保持最新”,然后才能再次变为有状态。

网络上有很多不错的资料,例如herehere