Kafka高级特性之消息事务、事务保证、避免僵尸实例 07

741 阅读1分钟
原文链接: blog.csdn.net

1. Kafka消息事务

1.1 数据传输的事务定义

  • 最多一次:消息不会被重复发送,最多被传输一次,但也有可能一次不传输。
  • 最少一次:消息不会被漏发送,最少被传输一次,但也有可能被重复传输。
  • 精确的一次(Exactly once):不会漏传输也不会重复传输,每个消息都被一次传输而且仅仅被传输一次,这也是大家所期望的。

1.2 事务保证

  • 内部重试问题:Procedure幂处理
  • 多分区原子写入
    在这里插入图片描述

1.3 避免僵尸实例

  • 每个事务Producer分配一个transactional.id,在进程重新启动时能够识别相同的Producer实例。
  • Kafka增加了一个与transactional.id相关的epoch,存储每个transactional.id内部元数据。
  • 一旦epoch被触发,任何具有相同的transactional.id和更旧的epoch的Producer被视为僵尸,Kafka会 拒绝来自这几Procedure的后续事务性写入。