获取kafka消息处理时间

Posted

技术标签:

【中文标题】获取kafka消息处理时间【英文标题】:Get kafka message processing time 【发布时间】:2021-09-22 13:19:44 【问题描述】:

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

据我了解,message.tsproducer 生成消息的时间(不是 kafka-broker 收到的时间消息)。

问题

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

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

【问题讨论】:

【参考方案1】:

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

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

您可以看到处理一条消息花费了多少时间,以及在生成后花费了多少时间,这正是您要寻找的。​​p>

【讨论】:

我还没有分布式跟踪。这是一个很棒的工具,我会看看。但是现在,无论我是否有分布式跟踪,我都需要答案。【参考方案2】:

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

表示处理时间平均为0.1毫秒。

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

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

【讨论】:

以上是关于获取kafka消息处理时间的主要内容,如果未能解决你的问题,请参考以下文章

Kafka--设计原理

使用 Kafka 处理大消息

kafka原理深入研究 (转 )

Kafka入门介绍

kafka学习笔记:知识点整理

kafka学习笔记:知识点整理