伙计们,
尝试使用Kafka进行POC处理消息,该实现绝对只需要处理一次。示例:as a payment system, process a credit card transaction only once
我们应该防范哪些极端情况?
here涵盖的一个失败方案是:
1。)如果使用者失败,并且没有承诺已读取特定偏移量,则会再次读取消息。
让我们说消费者生活在Kubernetes的Pod中,其中一位主机脱机。由于潜在的硬件问题,在吊舱消失之前,我们有可能已经处理了消息,但在Kafka中未将其标记为已处理。我是否正确理解此错误情况?
当考虑到Kafka仅做一次处理时,在生产者/消费者方面是否还有其他需要完全了解的故障情况?
谢谢!
答案 0 :(得分:1)
我将基本上重复并扩展我给here的答案:
一些情况可能导致重复:
还有一些以数据丢失为结尾的场景-查找“不干净的领导人选举”(禁用以可用性为代价的交易)。
也-kafka“恰好一次”配置仅在所有输入,输出和副作用都发生在同一kafka群集上时才起作用。常常使它在现实生活中用途有限。
您可以尝试使用一些kafka功能来减少发生这种情况的可能性:
我不得不说,作为过去几年一直维护 VERY 大型kafka安装程序的人,我永远不会使用依赖kafka进行核心交易处理的银行...