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