为什么这个示例不会导致脏读?

lx0bsm1f  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(295)

我和Kafka一起玩了一会儿 WordCountProcessorDemo 我意识到一定有一部分照片我不见了。也就是说,库如何保证在下面的代码中不会发生脏读:

@Override
public void process(final String dummy, final String line) {
    final String[] words = line.toLowerCase(Locale.getDefault()).split(" ");

    for (final String word : words) {
        final Integer oldValue = this.kvStore.get(word);

        if (oldValue == null) {
            this.kvStore.put(word, 1);
        } else {
            this.kvStore.put(word, oldValue + 1);
        }
    }

    context.commit();
}

据我所知,开火后 kvStore.get(..) 状态可能会被另一个streamprocessor示例更改,该示例位于使用不同分区的另一台计算机上。因此,由于执行了脏读,状态将变得不一致。
Kafka是否以某种方式处理了这种情况?

hjqgdpho

hjqgdpho1#

状态可能会被另一个streamprocessor示例更改
不是真的。国家是分裂的,因此每个国家 Processor 在整个州有自己的专属份额。

相关问题