kafka幂等性 博客https://www.cnblogs.com/smartloli/p/11922639.html
幂等性: 主要解决单会话(producer宕机重启幂等性失效)
主要是引入了ProducerID和SequenceNumber来实现幂等性
,当producer发送消息给broker后等待返回ack,broker持久化数据后并返回ack,
ack返回途中假如遇到了网络IO、FullGC、OOm等异常时,ack返回失败,
producer会继续发送数据,如果没有幂等性,那么数据会被再次持久化,
所以在发送消息的时候会同步一个PID和SequenceNumber,
PID是生产者初始化的时候生成的,SequenceNumber是累加的变量,
第一次发送数据和PID、SequenceNumber=1,
producer等待一段时间没收到ack继续发送数据和PID、SequenceNmber=1,
borker接收到相同的SequenceNumber会直接返回ack。
事务: 主要解决多回话
Kafka中的事务与数据库的事务类似,Kafka中的事务属性是指一系列的Producer生产消息和消费消息提交Offsets的操作在一个事务中,即原子性操作。对应的结果是同时成功或者同时失败。
这里需要与数据库中事务进行区别,操作数据库中的事务指一系列的增删查改,对Kafka来说,操作事务是指一系列的生产和消费等原子性操作。