我有一个场景,我们需要从kafka-EAST和kafka-WEST中读取消息,生产者也可以在其中发送消息。
Kafka-EAST的主题为T1,复制主题为来自“ WEST”的T1.R 。同样,Kafka-WEST具有相同的主题T1和来自“ EAST”的复制主题 T1.R 。实际上,在任何给定的区域,我们将拥有生产者产生的全套消息。到目前为止一切都很好。
现在,我们需要阅读消息。
从EAST中,如果我开始以40K msgs的批次读取消息,并且如果kafka-EAST在读取批次期间的给定时间点出现故障,则可以从WEST开始读取(当然,相同的读取失败适用于也可以是WEST)。
但是,与kafka-EAST的偏移量不同于kafka-WEST。这是通过确定从其他区域开始读取的位置来读取的问题的根源!!!因此,在西部地区,我会从头开始寻找线索。
好吧,我正在考虑偏移量元数据,并以时间戳记为参考,并稍微回溯该时间戳记并开始从WEST读取。但是,如果存在EAST kafka,则只能读取最新的偏移量和时间戳(但是,如果存在,则没有问题,我可以自己继续读取!!!)如果已死,我们也无法阅读,因为offset存储在kafka中。当然,当它回来时,我们可以阅读,而这不是我要解决的问题。
当EAST卡夫卡(EAST kafka)发生故障时,我想从WEST开始阅读。我可以外部化偏移量,仅在每次批量读取成功后才提交。当我们收到EAST kafka关闭的信号时,将启动WEST读取,以从与EAST的最后一次提交相同的批次ID开始读取。
这是最好的方法吗?还是我们有任何标准模式来解决这个问题?请注意,我们已经考虑过跨区。我们现在仅在区域级别解决。