2

rhino | 客户端和服务器的时间戳分析

 7 months ago
source link: https://benpaodewoniu.github.io/2024/02/17/rhino18/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

rhino | 客户端和服务器的时间戳分析

有这样一个场景,你有多个服务器,然后订阅交易所的数据。

如何判断哪个服务器连接最快?

很多人可能觉得使用时间戳,接收时间剪去服务器数据发送时间。

但是,这样是不对的,因为,你不能确定你自己各个服务器的时间是否一致。先说一下结论,每一个服务器的时间一定是不一致的,微小的可能差几ms,但是,对于抢单来说,这几ms就是天差地别。

所以,需要通过连续数据的差值来判断自身服务器的速度。比如,下面是从一个服务器拿到的日志:

[06:52:32].436 w.py line:44 INFO    increase price BSCSUSDT 0.012173 3492.42 send: 1708066352433 get: 1708066352436
[06:52:32].444 w.py line:44 INFO increase price BUNNYUSDT 0.24206 46.76 send: 1708066352441 get: 1708066352444
[06:52:32].445 w.py line:44 INFO increase price BUNNYUSDT 0.21663 69.19 send: 1708066352442 get: 1708066352445
[06:52:32].451 w.py line:44 INFO increase price BUNNYUSDT 0.22517 0.0 send: 1708066352444 get: 1708066352451
[06:52:32].451 w.py line:44 INFO increase price BUNNYUSDT 0.22746 0.0 send: 1708066352447 get: 1708066352451
  • send 是交易所服务器发送数据时间
  • get 是自己服务器接收数据时间

分析数据如下:

  • 第一条和第二条的 send 差 8 ms,get 差 8 ms
  • 第二条和第三条的 send 差 1 ms,get 差 1 ms
  • 第三条和第四条的 send 差 2 ms,get 差 6 ms
  • 第四条和第五条的 send 差 3 ms,get 差 0 ms

从上面的数据可以得出结论

  • websocket 的数据推送并不是实时的,因为第4,5 条数据是同时获得的

另外一个服务器的日志。

[08:56:11].258 w.py line:44 INFO    increase price MBOXUSDT 0.3445 2098.3 send: 1708073771241 get: 1708073771258
[08:56:11].285 w.py line:44 INFO increase price XODEXUSDT 0.00036507 67548.59 send: 1708073771281 get: 1708073771285
[08:56:11].306 w.py line:44 INFO increase price MBOXUSDT 0.3449 5344.4 send: 1708073771302 get: 1708073771306
[08:56:11].426 w.py line:44 INFO increase price MBOXUSDT 0.3484 100.0 send: 1708073771421 get: 1708073771426
[08:56:11].443 w.py line:44 INFO increase price BUNNYUSDT 0.22257 63.6 send: 1708073771440 get: 1708073771443

这个数据分析如下:

  • 第一条和第二条的 send 差 40 ms,get 差 27 ms
  • 第二条和第三条的 send 差 21 ms,get 差 21 ms
  • 第三条和第四条的 send 差 119 ms,get 差 120 ms
  • 第四条和第五条的 send 差 19 ms,get 差 17 ms

从上面的数据来看,第二个服务器的显然更快一些。因为,sendget 的差值不算大。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK