首页 > 解决方案 > 状态存储更改日志主题的消费者是什么

问题描述

我有一个使用处理器 api 更新状态存储的拓扑,配置为复制因子 3,acks=ALL

Topologies:
   Sub-topology: 0
    Source: products-source (topics: [products])
      --> products-processor
    Processor: products-processor (stores: [products-store])
      --> enriched-products-sink
      <-- products-source
    Sink: enriched-products-sink (topic: enriched.products)
      <-- products-processor

我的监控显示源主题的滞后很小(< 100 条记录),但是支持存储的更改日志主题存在显着滞后,达到数百万条记录的顺序。

我正试图找出这个更新日志主题滞后的根本原因,因为我没有在这个处理器中发出任何外部请求。有调用rocksdb状态存储,但这些数据存储都是本地的,应该可以快速检索。

我的问题是这个更改日志主题的消费者到底是什么?

标签: apache-kafkaapache-kafka-streams

解决方案


更改日志主题的消费者是恢复消费者。恢复消费者是内置于 Kafka Streams 中的 Kafka 消费者。与从源主题读取记录的主要消费者相比,恢复消费者负责从变更日志主题恢复本地状态存储,以防本地状态不存在或过期。基本上,它确保本地状态存储在失败后恢复。恢复消费者的第二个目的是使备用任务保持最新。

Kafka Streams 客户端中的每个流线程都有一个还原使用者。恢复消费者不是消费者组的成员,Kafka Streams 手动分配更改日志主题以恢复消费者。恢复消费者的偏移量不是在消费者偏移量主题__consumer_offsets中作为主要消费者的偏移量进行管理,而是在 Kafka Streams 客户端的状态存储目录中的文件中进行管理。


推荐阅读