Performance 请求/响应的卡夫卡消息时间戳
我正在构建一个性能监视工具,该工具与Kafka主题一起在集群中工作 例如,我正在监视两个主题:Performance 请求/响应的卡夫卡消息时间戳,performance,apache-kafka,timestamp,cluster-computing,clock,Performance,Apache Kafka,Timestamp,Cluster Computing,Clock,我正在构建一个性能监视工具,该工具与Kafka主题一起在集群中工作 例如,我正在监视两个主题:请求,响应。也就是说,我需要有两个时间戳-一个来自请求,另一个来自响应。然后,我可以计算差异,以查看在接收请求并生成响应的服务中花费了多少时间 请考虑到它正在群集上工作,因此不同的组件可能在不同的主机上运行,因此-不同的物理时钟-因此它们可能不同步,并且会显著扭曲结果 此外,我无法可靠地使用监控工具本身的时钟,因为这将通过其自身的处理时间影响计时结果 所以,我想设计一个合适的方法,可靠地计算时间差。在卡
请求
,响应
。也就是说,我需要有两个时间戳-一个来自请求
,另一个来自响应
。然后,我可以计算差异,以查看在接收请求并生成响应的服务中花费了多少时间
请考虑到它正在群集上工作,因此不同的组件可能在不同的主机上运行,因此-不同的物理时钟-因此它们可能不同步,并且会显著扭曲结果
此外,我无法可靠地使用监控工具本身的时钟,因为这将通过其自身的处理时间影响计时结果
所以,我想设计一个合适的方法,可靠地计算时间差。在卡夫卡,测量两个事件之间时间差最可靠的方法是什么 解决方案1: 我们以前也遇到过类似的问题,我们的解决方案是设置NTP(网络时间协议) 在本例中,您的一个节点充当NTP服务器并运行demons以保持所有节点的时间同步。我们保持UTC,所有其他节点都有NTP客户端,这些客户端在所有服务器上保持相同的时间 解决方案2:
为所有组件构建一个时钟通用API,该API将提供当前时间。这将使您的系统设计独立于节点本地时钟。因此,时间戳是由产生到
请求
和响应
主题的消息的应用程序设置的?或者您正在使用卡夫卡消息本身的时间戳?当您谈到测量两个事件之间的时间时,您如何定义事件的时间?@RobinMoffatt事件由不同的应用程序生成。例如,应用程序A发送请求,应用程序B响应请求,监控工具监听这两个事件以找出差异。所以,我想测量应用程序B的速度。“事件发生的时间”——是的,我对此不确定。我想最好的定义应该是应用程序B什么时候可以消费请求
事件,什么时候可以让别人消费响应
。在本例中,我猜可能是Kafka代理的时间戳。您可以将log.message.timestamp.type
设置为LogAppendTime
,在记录中使用代理时间戳。然后,您可以找到请求和响应的时间差。@KamalChandraprakash如何确保请求
和响应
主题使用相同的物理时钟?我的理解是卡夫卡可能在集群的多个节点上工作。。。