【发布时间】:2019-05-08 19:42:43
【问题描述】:
我有一个用例,我需要 100% 的可靠性、幂等性(无重复消息)以及我的 Kafka 分区中的订单保留。我正在尝试使用事务 API 来建立概念证明来实现这一点。我很难理解一个名为“isolation.level”的设置。
在这个article中,他们谈到了两个选项的区别
Kafka 消费者现在有两个新的隔离级别:
read_committed:读取不属于 事务,即在事务提交之后。 Read_committed 消费者使用分区的结束偏移量,而不是 客户端缓冲。这个偏移量是第一个消息 属于一个开放事务的分区。它也被称为“最后 稳定偏移”(LSO)。一个 read_committed 消费者只会读到 LSO 并过滤掉任何已被 中止。
read_uncommitted:按偏移顺序读取所有消息,没有 等待事务提交。此选项类似于 Kafka 消费者的当前语义。
这里的性能影响是显而易见的,但老实说,我很难在字里行间阅读并理解每个选择的功能影响/风险。 read_committed 似乎“更安全”,但我想了解原因。
【问题讨论】:
-
已编辑以明确我正在使用事务性 api。
标签: apache-kafka