Kafka Streams构建于Kafka本地集成的容错功能上。kafka分区具有高可用性和复制,因此当流数据持久保存到Kafka时,即使应用程序失败并需要重新处理时也可用。Kafka Streams中的任务利用Kafka消费者客户端提供的容错功能来处理故障。如果任务运行的计算机故障了,Kafka Streams会自动在其余一个正在运行的应用程序实例中重新启动该任务。
Kafka Streams还确保Local state store也很有力地处理故障容错。对于每个state store,Kafka Stream维护一个带副本的changelog的Topic,在该Topic中跟踪任何状态更新。这些changelog Topic也是分区的。该分区和Task是一一对应的。如果Task在运行失败并Kafka Stream在另一台计算机上重新启动该任务,Kafka Streams会保证在重新启动时对新启动的任务的处理之前,通过重播相应的更改日志主题,将其关联的状态存储到故障之前的内容。