Kafka中关于事务消息的实现

Kafka的事务消息实现了消息在生产、传输和消费的过程中的"仅一次"传递,也就是所谓的Exactly Once语义。

Kafka的事务消息主要由事务协调器 、幂等生产者 和事务性消费这三个核心组件来实现。

事务协调器主要负责事务的启动、提交和终止管理,将事务状态记录到__transaction_state内部的主题;

为了确保同一事务的每条消息只写入一次,Kafka Producer通过Producer ID来作为事务的唯一性标志。

在消费的过程中,消费者可以选择只消费已提交的事务消息,从而确保数据的最终一致性。

我们可以理一下Kafka的事务消息流程:

首先是生产者向Transaction Coordinator请求启动事务;

接下来生产者为了保证幂等性,给每条消息都带上唯一的Producer ID和Sequence Number,开始向Kafka写入事务消息;

当所有消息都写入完成后,生产者开始向事务协调去发送commit或者abort请求提交或者终止事务。

最后,消费者为了实现最终的数据一致性,可以通过设置read_commited 隔离级别,只消费已提交的消息。

相关推荐
青山木4 小时前
秒杀系统设计(二):数据正确性——防超卖、分布式锁与一人一单
分布式·后端·mysql·中间件·架构
weixin_4241836113 小时前
开放—封闭原则实战(下):基于策略的流程编排与编译期多态
c++·分布式·系统架构
frjc18 小时前
分布式事务:场景与选型决策表
分布式
GISMagic18 小时前
5.《Designing Data-Intensive Applications》:系统设计与分布式能力提炼
分布式·ai coding
需要82621 小时前
分布式 ID 生成:雪花算法、号段模式与时钟回拨
分布式·算法
灯澜忆梦1 天前
【RabbitMQ #11】 | 消费者可靠性
分布式·rabbitmq·ruby
仍然.1 天前
RabbitMQ---事务和消息分发
分布式·rabbitmq
灯澜忆梦1 天前
【RabbitMQ #9】 | 生产者可靠性
分布式·rabbitmq
此时不提桶,更待何时1 天前
06-09-A-Kafka架构与存储原理详解
架构·kafka·linq
银河技术1 天前
TB级文本去重实战:从单机 OOM 到 Spark / Ray 分布式架构的工程演进
分布式·微服务·重构·架构·spark·llm·rag