首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Apache Kafka交付订单

Apache Kafka交付订单
EN

Stack Overflow用户
提问于 2017-01-16 20:55:45
回答 4查看 1.8K关注 0票数 1

假设我有一个Kafka制作人。

我的消费者首先将消息M1写入Kafka上的主题T1 (通过同步api),然后将消息M2写入主题T2。

此时,消费者正在收听主题T1和T2。每当它看到topic T2上的消息时,它都会查找topic T1上的相关消息。

是否可以保证每当消费者看到主题M2上的消息T2时,都会看到主题T1上的消息M1?(因为在M2之前编写了M1 )

EN

回答 4

Stack Overflow用户

发布于 2017-01-16 21:38:53

关于担保的Kafka文档

https://kafka.apache.org/documentation/#intro_guarantees

高级Kafka的

  • 给出了以下由生产者发送到特定主题分区的guarantees:
  • Messages,将按照它们的发送顺序进行附加。也就是说,如果记录M1与记录M2是由同一个生产者发送的,并且先发送M1,则M1的偏移量将小于M2,并且在日志中出现的位置更早。
  • 消费者实例按照记录在日志中的存储顺序查看记录。对于复制因子为N的主题,我们将容忍最多N-1个服务器故障,而不会丢失提交到日志中的任何记录。
票数 2
EN

Stack Overflow用户

发布于 2017-01-16 22:07:54

否,不能保证

Kafka消费者不能保证阅读你的主题的最后一条消息,这取决于流量。在高峰情况下,您的消费者完全有可能正在阅读几分钟前关于给定主题的消息,以及另一个主题的最新消息。

此外,这意味着一些严重的调整,以确保您可以正确地分发您的应用程序,关于分区的影响。

使用kafka消费者重新分区的默认行为,您将不能拥有超过一个消费者,从而消除了Kafka的一个重要优势,即水平可伸缩性。

票数 2
EN

Stack Overflow用户

发布于 2017-01-16 21:04:26

不知道你是不是想问你问了什么。

是的,可以保证消费者最终会同时看到M1和M2。

但这是而不是保证的,它将在看到M2之前看到M1 。它完全允许它看到M2,然后才会收到M1,这是任意长时间之后的事。通过任意的长度,我们谈论的是毫秒,当然不是天。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41676924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档