Kafka 使用部分键进行分区时删除记录(压缩+逻辑删除)

q0qdq0h2  于 2022-11-28  发布在  Apache
关注(0)|答案(1)|浏览(134)

我们有以下要求:
1.由于数据隐私要求,我们需要能够在从主题中阅读记录后立即删除记录(尽最大努力)
1.对于给定的(功能)密钥,我们需要保持从生产者到消费者的严格顺序
1.我们需要允许每个键有多个记录
我们知道我们可以通过压缩来实现1),如果记录应该被删除的话,用墓碑覆盖记录。我们面临的问题是,每个键有多个记录,所以压缩不能直接使用,因为相同键的新记录会覆盖旧记录。
我们的想法是使用自定义分区策略和组合键,其中完整键是唯一的(用于逻辑删除),但部分键是共享的(就像分组键,用于分区)。
问:是否已经有一种方法可以在不实施自定义策略的情况下实现这一点?

vwkv1x7d

vwkv1x7d1#

分区不影响压缩。将始终使用完整键。
如果要允许多个记录,可以在值中使用数组,或者在Kafka Streams中进行聚合,以便在压缩之前执行相同的操作。
另外请记住,只有关闭的段会被压缩,默认段大小为1GB。因此,您可能无法像预期的那样立即删除数据。不建议强制执行非常小的段来调用频繁的压缩,因为这会对集群的CPU/IO产生负面影响。

相关问题