我有一个使用处理器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条记录),但是支持存储的changelog主题的延迟非常大,大约有数百万条记录。
我试图找出这个changelog主题延迟的根本原因,因为我没有在这个处理器中发出任何外部请求。有对rocksdb状态存储的调用,但这些数据存储都是本地的,检索起来应该很快。
我的问题是,这个变更日志主题的使用者到底是什么?
1条答案
按热度按时间biswetbf1#
changelog主题的使用者是还原使用者。还原使用者是构建到kafka流中的kafka使用者。与从源主题读取记录的主使用者不同,还原使用者负责从changelog主题还原本地状态存储,以防本地状态不存在或过期。基本上,它可以确保本地状态存储在发生故障后恢复。恢复使用者的第二个目的是使备用任务保持最新。
kafka streams客户端中的每个流线程都有一个还原使用者。还原使用者不是使用者组的成员,kafka streams手动分配changelog主题以还原使用者。还原使用者的偏移量不在使用者偏移量主题中管理
__consumer_offsets
作为主要使用者的偏移量,但位于kafka streams客户端的状态存储目录中的文件中。