说一下 Kafka 中关于事务消息的实现?

面试

  1. 事务开启:当生产者开始一个事务时,它会向 Kafka 集群中的事务协调者(通常是 Broker 的一部分)发送一个 请求。事务协调者将这个事务记录到专门的事务日志中。
  2. 消息发送:生产者随后可以发送一系列消息,这些消息会被标记为事务的一部分。与 RocketMQ 不同,Kafka 并不会让这些消息立即对消费者可见;相反,它们会被暂时隔离。
  3. 预提交:当生产者完成了所有的消息发送后,它可以向事务协调者发送一个预提交请求。事务协调者会在事务日 志中标记该事务的状态为预提交,并通知相关分区。
  4. 事务提交/回滚:生产者接着发送最终的提交或回滚请求给事务协调者。如果选择提交,协调者会完成两阶段提 交过程: •第一阶段:将事务状态更新为预提交,并将此更改写入事务日志。 • 第二阶段:向所有参与事务的分区发送一条特殊的控制消息,指示事务已经提交。消费者只有在看到这条控 制消息后才会消费属于该事务的消息。
  5. 事务结束:一旦提交过程完成,事务协调者会在事务日志中记录事务的最终状态,表明事务已经成功结束或者被 回滚。
相关推荐
lsc_blog21 小时前
听到优化风声,先准备能由自己掌控的事
数据库·分布式·中间件·职场和发展·重构
Lansonli2 天前
大数据Spark(八十七):Spark-Submit 参数详解
大数据·分布式·spark
qq_452396232 天前
第二篇:《CommitLog + ConsumeQueue:一条日志解决 Kafka 多分区随机写的难题》
分布式·kafka
Alluxio3 天前
Alluxio + OCI:为 AI 工作负载实现亚毫秒访问延迟与可扩展吞吐
运维·数据库·人工智能·分布式·缓存·ai·语言模型
阿卡好可爱3 天前
Lua 热更新不生效:改完文件线上仍是旧逻辑,package.loaded 与 upvalue 重绑定详解
数据结构·分布式·后端·架构·lua
我不会起名字3224 天前
消费回调固定 return nil:错误传播与 Kafka 位点提交的区别
后端·mongodb·kafka·go·im·故障排查
qq_452396234 天前
第十篇:《Kafka 安全加固:SASL、SSL、ACL 与多租户隔离》
安全·kafka·ssl
用户3610588626125 天前
KafkaProducer 元数据管理:send() 卡住时,它在等什么
kafka
方方洛5 天前
ray教程-28-附录G-CICD与Slurm与云上调度
人工智能·分布式·机器学习