我用来创建 GlobalKTable 的话题非常活跃。在 KStream-GlobalKTable join 的文档中我读了

The GlobalKTable is fully bootstrapped upon (re)start of a KafkaStreams instance, which means the table is fully populated with all the data in the underlying topic that is available at the time of the startup. The actual data processing begins only once the bootstrapping has completed.

KafkaStreams 是如何判断是否读取了所有数据的? 是否读取了时间戳低于 KafkaStreams 实例启动时间的所有消息?或者它是否使用某种超时?

无论哪种方式,我想我们最好对底层主题进行保留日志压缩,否则重启可能需要一段时间。

请您参考如下方法:

启动时,Kafka Streams 读取当前的日志结束偏移量,并在加载所有这些数据后完成引导(参见 KIP-99)。

请注意,GlobalKTable 在设计时考虑了静态/很少变化的数据。

Either way, I guess we better get the retention and log compaction of the underlying topic right or a restart might take a while.

GlobalKTable checkpoints as of 0.11 (今天发布)所以重启时引导应该比 0.10.2 快得多。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!