Apache Kafka和消息传递保证

12

我正在考虑使用Apache Kafka作为分布式消息发布者,以供多个订阅者使用。对于我来说,这是完美的选择,因为解决方案必须易于扩展。

Kafka的文档指出,可以确认消息从而确保消息传递。然而,今天我看到了这篇文章,它指出在某些情况下可能会丢失消息。但是,该文章仅在Google缓存中可用,因此我不知道它是否值得信赖...

所以我有一个疑问——是否存在任何时刻、任何场景,消息会丢失?换句话说,我的主要要求是每个消息必须到达其目的地。使用Apache Kafka能够满足这一要求吗?它是这项工作的正确工具吗?

2个回答

6
你要查找的文章原件在这里:http://engineering.onlive.com/2013/12/12/didnt-use-kafka/ 如果你阅读了全文及评论,你会发现许多关注点并不是确保至少传送一次,而是消息是否被成功地传送和处理。文章中最后几条评论,包括原作者的评论,似乎表明他对这种方法感到满意。
你可能还会对这篇文章感兴趣——涉及类似的问题: https://www.mail-archive.com/users%40kafka.apache.org/msg04492.html 来自部分文档的引用:
所以,Kafka默认情况下保证至少传递一次,并允许用户通过在生产者上禁用重试并在处理一批消息之前提交其偏移量来实现最多传递一次。精确一次交付需要与目标存储系统合作,但Kafka提供了偏移量,使得实现这一点变得简单。
我看到的大部分讨论都不是关于至少传输一次的保障,而是如何从那里走向最多传输一次或精确传输一次。

2

Kafka宣称,对于一个副本因子为N的主题,我们可以容忍最多N-1个服务器故障,而不会丢失提交到日志中的任何消息。

阅读他们文档页面中撰写的消息传递语义 可以更好地理解。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接