我正在卡夫卡(Kafka)交易中探索Zombie Fencing。
生产者A具有transaction.id前缀myId
,Kafka加0作为后缀。结果为transaction.id myId0
。
具有transaction.id myId0
的生产者A被宣告死亡。
生产者B已启动,并被分配了具有新纪元的transaction.id myId0
。
生产者A已恢复,但被Kafka拒绝,因为生产者B具有相同的transaction.id,但时期较新。
生产者A尝试发送新消息,并且Kafka增加了transaction.id后缀,结果为myId1
。
生产者A具有transaction.id myId1
。
生产者B具有transaction.id myId0
。
为生产者B分配了相同的transaction.id,并带有一个新的时期,以避免两个消费者重复输出。
为生产者A分配了一个新的transaction.id,以便两个生产者都可以继续进行处理而不会互相干扰。
我理解这个概念正确吗?