首先说一下思路,服务器划分基于以下原则: 1:分离游戏中占用系统资源(cpu,内存,IO等)较多的功能,独立成服务器2:在同一服务器架构下的不同游戏,应尽可能的复用某些服务器(进程级别的复用) 3:以多线程并发的编程方式适应多核处理器。 4:宁可在服务器之间多复制数据,也要保持清晰的数据流向 5:主要按照场景划分进程,若需按功能划分,必须保持整个逻辑足够的简单,并满足以上1,2点
服务器结构图: 各个服务器的简要说明: Gateway:应用网关,主要用于保持和client的连接,该服务器需要2种IO,对client采用高并发连接,低吞吐量的网络模型,如IOCP等,对服务器采用高吞吐量连接,如阻塞或异步IO。 网关主要有以下用途: World Server 是一个控制中心,它负责把各种计算资源分布到各个服务器 Phys Server 主要用于玩家移动,碰撞等检测 Scene Server 场景服务器,按场景划分,每个服务器负责的场景应该是可以配置的。理想情况下是可以动态调节的。 ItemMgr Server 物品管理服务器,负责所有物品的生产过程。在该服务器上存储一个物品掉落数据库,服务器初始化的时候载入到内存。任何需要产生物品的服务器均与该服务器直接通信 AIServer 又一个功能服务器,负责管理所有NPC的AI。AI服务器通常有2个输入,一个是Scene Server发送过来的玩家相关操作信息,另一个时钟Timer驱动,在这个设计中,对其他服务器来说,AIServer就是一个拥有很多个NPC的客户端。AIserver需要同步所有与AI相关的数据,包括很多玩家数据。由于AIServer的Timer驱动特性,可在很大程度上使用TBB程序库来发挥多核的性能。 |
|