Kafka事务原理和应用

应用场景

  1. Producer发送的消息包含多条,组成一个事务,这些消息要么全部对Consumer可见,要么全部不可见
  2. 这些消息往往是往不同的分区发送,那么如何控制多分区的事务则成为了分布式事务
  3. 事务处理过程中,隔离级别控制着Consumer对这些消息的可见

事务原理

Transaction Coordinator

引入Coordinator,是每个broker内部模块,事务日志则写入到内部的topic中,事务日志中存储当前事务的最新状态,如如“Ongoing”,“prepare commit”和“Completed”之类的各种状态。
每个Producer配置transactional.id唯一。

流程

  1. Producer通过initTransactions 向Coordinator注册transactionid
  2. 当commit或者abort时,Coordinator开启二阶段提交协议
  3. Producer将数据写入目标Topic所在分区

相关配置

Producer

  1. enable.idempotence:开启幂等
  2. transaction.timeout.ms:事务超时时间
  3. transactional.id

Consumer

isolation.level:读未提交、读已提交

Broker

  1. transactional.id.timeout.ms
  2. max.transaction.timeout.ms
  3. transaction.state.log.replication.factor
  4. transaction.state.log.num.partitions
  5. transaction.state.log.min.isr
  6. transaction.state.log.segment.bytes
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值