首先要说明的是, 这个棋牌游戏的服务器架构参考了网狐棋牌的架构。网狐棋牌最令人印象深刻的是其稳定性和高网络负载。它的一份压力测试报告上指出:一台双核 r 的 INTEL Xeon 2.8CPU 加上 2G 内存和使用共享 100M 光纤的机子能够支持 5000 人同时在线游戏。 在研究其服务器框架后发现,它的网络部分确实是比较优化的。它主要采用了 Windows 提供的 IO 完成端口来实现其网络组件。本服务器虽然参考了其设计,但是还是有很大的不同,因为这个服务器框架主要是用在 linux 系统之上,而网狐棋牌是基于 Windows 平台的,严重依赖于 windows sdk。这个架构延续了网狐棋牌在网络组件所作的努力,这个棋牌的服务器也使用异步 IO 作为网络的工作方式,更为彻底的是其数据库也是采用异步架构。boost::asio 提供了一个异步框架,所以它的几个核心组件: TCPServerService, TimerService, DatabaseService, AsyncService 中都可以看到 boost::asio 的影子。图 1 是总体架构图。从图上我们看到服务器的整体架构分为三层:Libraries, Core 和 Applications。Core 层基于 Libraries 实现,而 Applications 使用 Core 层提供的服务,并且要监听 Core 层的异步事件 (Socket、Database 等)。