Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 请求/响应的卡夫卡消息时间戳_Performance_Apache Kafka_Timestamp_Cluster Computing_Clock - Fatal编程技术网

Performance 请求/响应的卡夫卡消息时间戳

Performance 请求/响应的卡夫卡消息时间戳,performance,apache-kafka,timestamp,cluster-computing,clock,Performance,Apache Kafka,Timestamp,Cluster Computing,Clock,我正在构建一个性能监视工具,该工具与Kafka主题一起在集群中工作 例如,我正在监视两个主题:请求,响应。也就是说,我需要有两个时间戳-一个来自请求,另一个来自响应。然后,我可以计算差异,以查看在接收请求并生成响应的服务中花费了多少时间 请考虑到它正在群集上工作,因此不同的组件可能在不同的主机上运行,因此-不同的物理时钟-因此它们可能不同步,并且会显著扭曲结果 此外,我无法可靠地使用监控工具本身的时钟,因为这将通过其自身的处理时间影响计时结果 所以,我想设计一个合适的方法,可靠地计算时间差。在卡

我正在构建一个性能监视工具,该工具与Kafka主题一起在集群中工作

例如,我正在监视两个主题:
请求
响应
。也就是说,我需要有两个时间戳-一个来自
请求
,另一个来自
响应
。然后,我可以计算差异,以查看在接收请求并生成响应的服务中花费了多少时间

请考虑到它正在群集上工作,因此不同的组件可能在不同的主机上运行,因此-不同的物理时钟-因此它们可能不同步,并且会显著扭曲结果

此外,我无法可靠地使用监控工具本身的时钟,因为这将通过其自身的处理时间影响计时结果


所以,我想设计一个合适的方法,可靠地计算时间差。在卡夫卡,测量两个事件之间时间差最可靠的方法是什么

解决方案1

我们以前也遇到过类似的问题,我们的解决方案是设置NTP(网络时间协议)

在本例中,您的一个节点充当NTP服务器并运行demons以保持所有节点的时间同步。我们保持UTC,所有其他节点都有NTP客户端,这些客户端在所有服务器上保持相同的时间

解决方案2


为所有组件构建一个时钟通用API,该API将提供当前时间。这将使您的系统设计独立于节点本地时钟。

因此,时间戳是由产生到
请求
响应
主题的消息的应用程序设置的?或者您正在使用卡夫卡消息本身的时间戳?当您谈到测量两个事件之间的时间时,您如何定义事件的时间?@RobinMoffatt事件由不同的应用程序生成。例如,应用程序A发送请求,应用程序B响应请求,监控工具监听这两个事件以找出差异。所以,我想测量应用程序B的速度。“事件发生的时间”——是的,我对此不确定。我想最好的定义应该是应用程序B什么时候可以消费
请求
事件,什么时候可以让别人消费
响应
。在本例中,我猜可能是Kafka代理的时间戳。您可以将
log.message.timestamp.type
设置为
LogAppendTime
,在记录中使用代理时间戳。然后,您可以找到请求和响应的时间差。@KamalChandraprakash如何确保
请求
响应
主题使用相同的物理时钟?我的理解是卡夫卡可能在集群的多个节点上工作。。。