每个客户端模型或 NIO 反应器模式的旧 I/O 线程?
我正在编写多人游戏的服务器端网络。该游戏是一款RPG游戏,它的绝对最大容量为2000名玩家,但实际上它将达到约300名玩家,尽管它可能更高或更低。在很长一段时间里,每当我不得不做涉及大量客户端的网络时,我都坚持使用NIO,因为它不需要使用数百个线程。最近,我遇到了一个PowerPoint演示文稿,它详细描述了这两个模型,它几乎使每个客户端的线程模型看起来优于NIO。我还发现一些地方,它指出旧的IO实际上也可以优于NIO。
PowerPoint可以在这里找到(它有点旧):http://www.mailinator.com/tymaPaulMultithreaded.pdf。
我还没有写过任何内容,所以如果我必须改变我的整个网络设计,那么从头开始对我来说不是一个问题。我没有时间压力。最初,我使用NIO设计一个反应器模式实现(选择一个事件,调度一个处理程序来处理事件)。
更多信息可以在这里找到:http://en.wikipedia.org/wiki/Reactor_pattern
我的整个反应器实现都设计为使用单个线程。由于我读到旧的IO可以超越,它实际上使我陷入了两难境地。我不想设计一个复杂的NIO系统,使用多个线程只是为了充分利用所有的CPU功率,但我也对让单个应用程序使用300多个线程的想法感到畏缩。哪种设计适合我的目的?每个客户端的线程的优点是,它真正利用了所有的CPU能力,但与此同时,它使系统陷入困境。更不用说,单个线程的堆栈大小会占用大量内存(乘以几百倍时)。我应该坚持反应堆模式吗?
我知道这个问题有点模棱两可,但我觉得我需要专门针对我的情况提出一个问题,因为我在这个网站上找不到一个问题,也没有一个网站来解决我的同类问题。有一个关于游戏,但游戏的目的是处理成千上万的玩家。
多谢!如果您需要任何澄清,请询问!