【问题标题】:How to decrease latency on Binance API orderbook calls? [closed]如何减少 Binance API 订单簿调用的延迟? [关闭]
【发布时间】:2018-06-28 02:42:22
【问题描述】:

我目前正在尝试减少使用 Binance API 调用订单簿时的延迟。

我收到约 7 毫秒的 ping,但订单簿调用需要约 200 毫秒才能下载。我正在使用托管在 Binance 使用的同一 AWS 场中的 VM,并且我的网络速度约为 800mbps。我不明白为什么在 orderbook 的大小相对较小时,orderbook 调用的接收时间比 ping 服务器所需的时间多近两个数量级。

我们将不胜感激任何对网络或 Binance 施加的限制的帮助或见解。

【问题讨论】:

  • 两个建议:一,不要要求比你绝对需要的更多的信息。二,衡量看什么花费时间 - 主要是打开连接的时间,发送查询的时间,回复第一个字节的时间,接收回复的时间,意识到你有整个回复的时间,还是什么? ?
  • 我同意@DavidSchwartz。您需要分析您的代码和网络流量。至于网络流量分析,您可以在正在使用的接口上使用tcpfump。然后您可以在 Wireshark 中打开捕获文件,看看是否有任何危险信号。
  • 你怎么知道币安使用哪个 AWS 农场?此外,由于您传输的数据量如此之小,互联网速度有多大影响?

标签: api amazon-ec2 network-programming bitcoin ethereum


【解决方案1】:

重要区别:

  • Ping:去最近的CDN边缘节点,它会响应你;你无法靠近 Binance 服务器。

  • API 请求: 到最近的 CDN 边缘节点,被路由到 Binance 服务器,被处理,然后响应被路由回给你。

币安服务器托管在东京的 AWS 上。如果你把你的主机放在那里,延迟大约是 12-15 毫秒(从币安发送响应开始 2 毫秒。)

为了降低平均延迟,您可以尝试并行发布幂等请求,然后使用最先到达的响应。这很粗鲁,但它可以完成工作。

顺便说一句,客户订单 ID 是可重复使用的,这使得它们无法作为一种使订单具有幂等性的方法。 (但是,如果您使用固定的订单大小,您可以先发制人地锁定所有剩余资金,然后在知道重复订单无法成功的情况下通过下单锤击币安,因为您没有资金。)

【讨论】:

    【解决方案2】:

    目前已有多个 api 端点 api/api1/api2/api3.binance.com 我使用 cmd ping 了端点。以及@Tiana 提供的给定方法。 对我来说 api2 有某种最好的延迟。但并不比 api1 或 api3 好。 只是 normla api 有时会有非常糟糕的延迟。 显然端点在不同的服务器上,我猜和 api。端点被过度使用了。 所以我建议使用 api2.binance.com 端点

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-10
      • 1970-01-01
      • 2021-05-01
      • 2019-12-07
      • 2021-10-22
      • 2021-09-16
      • 1970-01-01
      相关资源
      最近更新 更多