卡夫卡实时保证

时间:2018-07-04 12:56:23

标签: apache-kafka real-time

Kafka可以保证消费者(成功)产生x毫秒后会看到消息吗?

背景:

我有一个系统,其中服务A接受请求。服务B需要能够回答在一定时间内已经收到了多少个请求。服务B需要精确。我的计划是:

  • 服务A接受请求,它生成一条消息,并等待至少一个副本的确认。做到这一点,它将向用户发送其请求在“系统中”。

  • 根据服务B的要求,我等待了x ms。然后,我检查主题中是否有新请求。所以我在“ now()-x ms”处知道服务A的状态为100%。

在这种情况下,Kafka需要保证在生成消息后,我最多可以消耗X毫秒。是这样吗?

1 个答案:

答案 0 :(得分:0)

在Kafka中,高水位标记增加后即可使用消息。确保已满足最小数量的同步副本后,才会发生这种情况。这里的权衡是等待时间的持久性。如果您需要较低的延迟,则仅对领导者进行确认会更快。但是,这不像在同步副本中等待2个持久。当回答“我何时可以消费?”时,您实际上是在回答“何时确认消息是由卡夫卡撰写的?”