0

我有 2 个服务:生产者和消费者。

据我了解,message.ts生产者产生消息的时间(而不是kafka-broker 收到消息的时间)。

问题

  1. 消费者消费消息时,我怎么知道它在 kafka-broker 内的时间(没有网络延迟:从生产者到 kafka-broker 以及从 kafka-broker 到消费者)?

  2. 我从我的消费者 vm 到 kafka 代理执行了 ping 操作。ping 结果为 0.7ms(毫秒)。从每一方到kafka broker的网络延迟是0.3ms吗?我假设 kafka 传输是TCP这样的,所以所有东西都有一个“ACK”消息。而且我假设没有“ACK”,每一方都不会做任何事情,所以我得出结论,每个大小的网络延迟与 ping 结果相同:0.7ms(毫秒)。我对么?

4

2 回答 2

0

我通过从同一个 vm 到 kafka(在我的集群内)生产和消费来手动测试这一点。结果是 1.3-1.5 毫秒。

这意味着处理时间平均花费了 0.1 毫秒。

  • 我每 1 秒生成一条新消息,以避免消费时出现延迟。

这不是最好的解决方案,但对我的研究来说已经足够了。

于 2021-07-21T17:54:02.513 回答
0

比这复杂一点。许多变量涉及处理消息所需的时间。我建议您研究分布式跟踪。像Zipkin这样的东西就像魔法一样工作,非常容易设置和使用。这是有关如何使用 Spring Boot 设置 Zipkin 跟踪的教程。您甚至可以将它与带有拦截器的 Kafka Connect 一起使用,这是我使用的一个:brave-kafka-interceptor

Zipkin 为每条消息生成跟踪,包括处理它的所有生产者和消费者。这些痕迹最终看起来像这样:

在此处输入图像描述

您可以看到处理一条消息花费了多少时间,以及在生成后花费了多少时间,这就是您要查找的内容。

于 2021-07-13T14:34:56.883 回答