Python 确定两台机器之间最先到达的数据包/更新

Python 确定两台机器之间最先到达的数据包/更新,python,amazon-web-services,networking,time,websocket,Python,Amazon Web Services,Networking,Time,Websocket,我在一个区域(不同的可用性区域)内设置了两个独立的AWS虚拟机,它们都通过WebSocket(Python)连接到同一主机服务器(也由AWS托管)的不同负载平衡器(Cloudfront),并频繁接收小型WebSocket有效负载-每5毫秒一次 注意:我不拥有主机服务器,我只是在接收端 两台机器都接收到相同的更新,我想测量更新/有效负载/数据包最先到达的机器 本质上,我想弄清楚哪个负载平衡器离主机“更近”,因此传输信号的延迟开销最小,因为我的应用程序对延迟非常敏感 我曾尝试使用系统时钟获取数据到达

我在一个区域(不同的可用性区域)内设置了两个独立的AWS虚拟机,它们都通过WebSocket(Python)连接到同一主机服务器(也由AWS托管)的不同负载平衡器(Cloudfront),并频繁接收小型WebSocket有效负载-每5毫秒一次

注意:我不拥有主机服务器,我只是在接收端

两台机器都接收到相同的更新,我想测量更新/有效负载/数据包最先到达的机器

本质上,我想弄清楚哪个负载平衡器离主机“更近”,因此传输信号的延迟开销最小,因为我的应用程序对延迟非常敏感

我曾尝试使用系统时钟获取数据到达的时间戳,但不能保证这两个实例的时间同步到适当的精度。

遵循这一点

  • 向负载平衡器发送请求,请求主体包含发送到服务器时的时间戳。你可以 使用fav语言的DateTime api轻松完成此操作

  • 在该数据包到达驻留在实例上的后端服务器(可以是简单节点服务器或rails服务器)之后,您可以获得 并将其与当前时间戳进行比较

  • 您可以在两台服务器上执行此操作,并且可以轻松比较哪台更快


  • 谢谢你的回答,我恐怕这不会工作,因为我没有自己的主机服务器,我只是在接收端。这还需要前端和后端的时钟完全同步,这是我正在努力解决的另一个问题。我们可以比较两台机器上请求的到达时间。其思想是记录两个连续数据包的接收时间。它们的差异将使您获得两个数据包到达时间的差异。在机器上执行此操作,任何机器上接收到的最短时间都将是离LB+主机最近的机器。请告诉我这是否合理。例如,假设我们不知道请求发起时间。让我们在两台机器上都将其保留为X,我们正在记录收到请求的时间。在机器A上是A,在机器B上是B。如果我们认为请求是以统一的方式来的,我们可以安全地假设下一个包也会同时出现。现在我们可以假设两个数据包上的最后到达时间,就像它们的起始时间一样,因为这不会有太大区别,假设数据包是在恒定的相同持续时间内生成和发送的。基本上,只需获得两台计算机上两个请求的到达时间差,最低候选值将是LB和客户端u想要使用的组合。:)我建议你实际上不在乎哪个消息先到达。相反,您关心哪个loadbalancer为您提供更好的服务质量。在多个请求上衡量您在两台主机上的服务质量,然后进行相应的选择。此外,很难对两台不同计算机上发生的事件进行总体排序。但我关心哪条消息先到达,这些消息是货币价格更新,因此使用延迟消息将不利于交易性能。因此,听起来您有一个QoS指标-哪个节点的交易更有利可图?恐怕利润差异太大,无法用作比较两者的指标。