Blog
kafka-10 Kafka事务
Producer事务
幂等性只能解决单分区单会话的问题
精准一次性写到开发集群
- 为实现跨分区会话的事务,引入全局唯一的TransactionID(事务ID),将Producer的PID和TransactionID绑定,在Producer重启后就可以通过正在进行的TransactionID来获得原来的PID
- 为管理Transaction Kafka引入组件Transaction Coordinator
- Producer从Transaction Coordinator获取Transaction ID
- Transaction Coordinator将事务写入kafka内部topic,这样整个服务重启由于事务状态得到保存,进行中的事务状态可以得到恢复,从而继续进行
Consumer事务
对Consumer而言事务的保证就会相对较弱,尤其是无法保证Commit的信息被精确消费,这是由于consumer可以通过offset访问任意信息,而且不同的SegmentFile生命周期不同,同一事务的消息可能出现重启后被删除的情况