我正在构建一个性能监视工具,它可以在具有Kafka主题的集群中工作。
例如,我正在监控两个主题:request
,response
。即我需要有两个时间戳 - 一个来自request
,另一个来自response
。然后我可以计算差异,看看在收到请求并产生响应的服务中花了多少时间。
请考虑它正在群集上运行的帐户,因此不同的组件可能在不同的主机上运行,因此 - 不同的物理时钟 - 因此它们可能不同步并且会显着扭曲结果。
此外,我无法可靠地使用监视工具本身的时钟,因为这将通过其自己的处理时间影响计时结果。
所以,我想设计一种可靠计算时差的正确方法。测量卡夫卡两个事件之间时差的最可靠方法是什么?
解决方案1:
之前我们遇到过类似的问题,我们的解决方案是建立NTP(网络时间协议)。
在这个节点中,您的一个节点充当NTP服务器并运行恶魔以保持所有节点的时间同步,我们保留UTC,所有其他节点都有NTP客户端,这些客户端在所有服务器上保持相同的时间
解决方案2:
为所有组件构建时钟通用API,以提供当前时间。这将使您的系统设计独立于节点本地时钟。