代码之家  ›  专栏  ›  技术社区  ›  Raman

卡夫卡流:重新平衡期间的存储状态

  •  1
  • Raman  · 技术社区  · 7 年前

    在定期执行标点符号方法时遍历迭代器的过程中,如果发生重新平衡,下面的循环是否会停止或引发异常?或者它会自动恢复,如果是这样,它会用相同的分区碎片恢复吗?

        KeyValue<String, House> curr;
        KeyValueIterator<String, House> houseIterator = houseStore.all();
        while (houseIterator.hasNext()) {
            j++;
            curr = houseIterator.next();
            houseStore.delete(curr.key);
        }
        houseIterator.close();
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   miguno    7 年前

    执行线程将不调用 KafkaConsumer#poll() 直到 punctuate() 结束了。因此,线(即, punctuate )将继续运行。

    如果 标点符号() 完成之前 max.poll.interval.ms 通过,它将正确地重新平衡。如果 标点符号 完成时间 最大轮询间隔.ms 使用者将退出使用者组,并且它的分区可能被重新分配。但是,这取决于 标点符号 ,它不会被注意到,而且 标点符号 可能还是会结束。后来,什么时候 poll 被调用时,实例将通过另一个重新平衡重新加入组。

    不过,请注意,建议配置 最大轮询间隔.ms 这样实例就不会首先从使用者组中退出。即,该值应设置为大于 标点符号 .