我在一台 Linux 机器上运行游戏服务器,该机器有一个由代理屏蔽的 IP 地址。该机器位于洛杉矶的数据中心,对于其他一些国家的玩家来说,与美国玩家相比,他们的 ping 值较高。
是否可以在一个位置托管服务器,但为其他国家的玩家提供相同的体验?
喜欢au.example.com,us.example.com,eu.example.com。
这可能吗?我想要 1 个服务器实例,而不是全球多个实例(这会降低每个服务器的玩家数量)。
答案1
正如一位评论者所说,问题在于物理学。
例如,从美国到澳大利亚的一条海底电缆长约 12500 公里。数据必须经过这条路径两次,即 25000 公里。这还只是电缆。您必须为美国和澳大利亚添加更多光纤。
典型的单模光纤的折射率约为 1.444(光在光纤中的传播速度比在真空中的传播速度慢 1.444 倍)。
25000公里 / ( c / 1.444 )~ 120 毫秒
如果您的服务器直接连接到电缆的美国端,而客户端直接连接到澳大利亚端,那么这是您能获得的最短响应时间。大多数情况下,两端都有更多互连和多个路由器,这也会增加延迟。
此外,链接并非专用于您的游戏,因此大多数路由器上都有缓冲区,这会增加另一个延迟(长度不同)。
如果条件不理想(主要是因为断电),就不要让我开始谈论数据是如何传输的。然后数据可以从洛杉矶传输到纽约,再到旧金山,再到东京,再到新德里,再到悉尼(只是一个例子)。而且你尝试连接的时间越长,这些问题发生的可能性就越大,而且它们会变得更加明显。
正如我所料,您所谈论的游戏是某种实时体验(这就是您想要改善网络延迟的原因),几乎不可能使用某种代理或 CDN 来降低客户端延迟。
您可以考虑使用某种虚拟/云托管在负载不是很高的地方启动小型实例。一旦玩家群增长,就转移到专用服务器/硬件。
如果我对实时性的假设是错误的,请更新您的问题,详细说明游戏的类型/种类、其工作原理,或者更好的是游戏的名称。(顺便问一下,您是该游戏的作者吗 - 您可以修改游戏吗 - 或者只是运行服务器?)