获取kafka消息处理时间
Get kafka message processing time
我有 2 个服务:生产者和消费者。
据我了解,message.ts
是生产者产生消息的时间(不是 kafka-broker 收到消息的时间。
问题
当消费者消费消息时,我怎么知道它在kafka-broker中有多少时间(没有网络延迟:从生产者到kafka-broker 和从 kafka-broker 到消费者)?
我从我的消费者虚拟机对 kafka 代理执行了 ping 操作。 ping 结果是 0.7ms(毫秒)。从每一方到kafka代理的网络延迟是否为0.3ms?我假设 kafka transport 是 TCP
所以所有东西都有一个“ACK”消息。而且我假设如果没有“ACK”,每一方都不会做任何事情,所以我得出结论,每个大小的网络延迟与 ping 结果相同:0.7ms(毫秒)。 我说的对吗?
比那要复杂一点。许多变量会影响处理消息所需的时间。我建议您研究分布式跟踪。类似于 Zipkin works like magic and is very easy to setup and use. Here's a tutorial on how to setup Zipkin tracing with Spring Boot. You can even use it with Kafka Connect with an interceptor, here's the one I use: brave-kafka-interceptor.
Zipkin 为每条消息生成一个跟踪,包括处理它的所有生产者和消费者。这些痕迹最终看起来像这样:
你可以看到一条消息处理了多少时间,消息产生后消耗了多少时间,这就是你要找的。
我通过从同一个虚拟机生产和消费到卡夫卡(在我的集群内)来手动测试这个。结果是 1.3-1.5 毫秒。
表示处理时间平均为0.1毫秒。
- 我每 1 秒产生一条新消息以避免消费时的延迟。
这不是最好的解决方案,但足以满足我的研究。
我有 2 个服务:生产者和消费者。
据我了解,message.ts
是生产者产生消息的时间(不是 kafka-broker 收到消息的时间。
问题
当消费者消费消息时,我怎么知道它在kafka-broker中有多少时间(没有网络延迟:从生产者到kafka-broker 和从 kafka-broker 到消费者)?
我从我的消费者虚拟机对 kafka 代理执行了 ping 操作。 ping 结果是 0.7ms(毫秒)。从每一方到kafka代理的网络延迟是否为0.3ms?我假设 kafka transport 是
TCP
所以所有东西都有一个“ACK”消息。而且我假设如果没有“ACK”,每一方都不会做任何事情,所以我得出结论,每个大小的网络延迟与 ping 结果相同:0.7ms(毫秒)。 我说的对吗?
比那要复杂一点。许多变量会影响处理消息所需的时间。我建议您研究分布式跟踪。类似于 Zipkin works like magic and is very easy to setup and use. Here's a tutorial on how to setup Zipkin tracing with Spring Boot. You can even use it with Kafka Connect with an interceptor, here's the one I use: brave-kafka-interceptor.
Zipkin 为每条消息生成一个跟踪,包括处理它的所有生产者和消费者。这些痕迹最终看起来像这样:
你可以看到一条消息处理了多少时间,消息产生后消耗了多少时间,这就是你要找的。
我通过从同一个虚拟机生产和消费到卡夫卡(在我的集群内)来手动测试这个。结果是 1.3-1.5 毫秒。
表示处理时间平均为0.1毫秒。
- 我每 1 秒产生一条新消息以避免消费时的延迟。
这不是最好的解决方案,但足以满足我的研究。