获取kafka消息处理时间
Posted
技术标签:
【中文标题】获取kafka消息处理时间【英文标题】:Get kafka message processing time 【发布时间】:2021-09-22 13:19:44 【问题描述】:我有 2 个服务:生产者和消费者。
据我了解,message.ts
是 producer 生成消息的时间(不是 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消息处理时间的主要内容,如果未能解决你的问题,请参考以下文章