有这样一个场景,你有多个服务器,然后订阅交易所的数据。
如何判断哪个服务器连接最快?
很多人可能觉得使用时间戳,接收时间剪去服务器数据发送时间。
但是,这样是不对的,因为,你不能确定你自己各个服务器的时间是否一致。先说一下结论,每一个服务器的时间一定是不一致的,微小的可能差几ms,但是,对于抢单来说,这几ms就是天差地别。
所以,需要通过连续数据的差值来判断自身服务器的速度。比如,下面是从一个服务器拿到的日志:
1 | [06:52:32].436 w.py line:44 INFO increase price BSCSUSDT 0.012173 3492.42 send: 1708066352433 get: 1708066352436 |
- 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 条数据是同时获得的
另外一个服务器的日志。
1 | [08:56:11].258 w.py line:44 INFO increase price MBOXUSDT 0.3445 2098.3 send: 1708073771241 get: 1708073771258 |
这个数据分析如下:
- 第一条和第二条的 send 差 40 ms,get 差 27 ms
- 第二条和第三条的 send 差 21 ms,get 差 21 ms
- 第三条和第四条的 send 差 119 ms,get 差 120 ms
- 第四条和第五条的 send 差 19 ms,get 差 17 ms
从上面的数据来看,第二个服务器的显然更快一些。因为,send
和 get
的差值不算大。