在两台计算机之间快速交换数据


Quickly exchanging data between two computers

我一直在尝试将两台计算机的处理能力作为一个整体使用的方法(不是通过物理连接它们,而是通过将任务分成两半,每台计算机做一半,然后来自"辅助"计算机的结果被发送回,通过互联网与来自"主"计算机的结果相结合)

我一直在使用这种方法来计算分形图像,效果很好。图像的左半部分和右半部分在不同的计算机上计算,然后合并为一台。将图像的一半发送到另一台计算机并将它们组合的过程可能需要一秒钟,因此效率很高,并将时间缩短了大约一半。

当您想要使用需要非常频繁地交换数据的东西进行这种"多计算机处理"时,问题就来了。例如,我想将其用于n体模拟之类的东西。您需要每秒进行多次数据交换,因此,如果交换大约需要一秒钟,那么尝试使用两台计算机实际上需要更长的时间,然后使用一台计算机。

那么在线视频游戏是如何做到的呢?你周围的玩家,他们在做什么,他们穿什么,发生的一切都必须在每个人之间交换,每秒玩很多次。

我只是在寻找有关如何快速发送大量数据的一般想法。我一直在这样做的方式是在免费托管网站上使用 PHP。辅助计算机将计算其一半的数据,然后将其发送到PHP文件,该文件将该数据保存在某处。然后主计算机读取此数据并将其与已经计算的数据相结合。我有一种感觉PHP不是要走的路,但我对这种事情了解不多。

您的第一步是从使用 HTTP 请求转向直接使用 Sockets - 这将使您更好地控制通信,并通过减少 HTTP 协议的开销来提高性能(这可能非常重要)。此外,使用套接字,您可以更轻松地让程序直接相互通信,而不是通过基于 PHP 的软件。

网上有很多关于如何做这种系统的指南,我建议谷歌搜索"游戏网络"和"分布式计算"之类的东西。

以下是我过去发现有用的一系列文章,涵盖了您想要阅读的内容:http://gafferongames.com/networking-for-game-programmers/

(他不使用Java,但思想是通用的)