zoukankan      html  css  js  c++  java
  • kafka学习总结006 --- 生产者事务

    前面提到了,kafka0.11.0版本引入的幂等性只能保证分区级别的at-exactly-once语义

     如图,producer向三个分区分别生产10条数据,前两个生产成功,写第三个分区时,producer挂掉;producer重启后,重新向三个分区写入数据;

    此时producer的PID变化,导致消息重复,因此引入了事务,解决该问题

    生产者事务

    生产者创建时,设置全局唯一的事务ID --- TransactionID;事务ID与PID绑定,当producer重启后,会根据事务ID查找PID,因此能够保证全局at-exactly-once语义

    配置方法:transactional.id(注:使用事务的前提是必须开启幂等性

    解决全局精确唯一语义是kafka事务引入的初衷,但是后期又引入的新的功能:producer生产消息的batch在一个原子单元内完成;

    也就是说:当前batch的消息要么全部生产成功,要么全部失败,并且故障恢复后,能够保证事务ID不变;

    这里需要提一下:事务ID是由用户指定的,而PID是生产者创建成功后,producer向kafka申请的;并且两者为1:1关系

  • 相关阅读:
    代理模式第一篇
    命令模式第二篇
    windows service 定时
    postman之asp.net webapi
    qq第三方登录
    core2.1下的identity 汉化
    asp.net core2.0里的Nlog
    Unable to create an object of type 'ApplicationDbContext'.
    identity使用mysql
    二进制位运算解决状态值
  • 原文地址:https://www.cnblogs.com/sniffs/p/13148690.html
Copyright © 2011-2022 走看看