游戏服务器要素 #
对于游戏服务器,三个比较重要的部份就是:CPU、内存、带宽的设计
- 逻辑架构:合适的进程、线程、协程的CPU调度方案,合适的同步或异步编程模型,分区分服或世界服的方式来提高服务器的承载量和稳定性
- 内存架构:合理使用内存,提高承载量,降低服务延迟
- 通信架构:通信协议如UDP/TCP
游戏服务器演进 #
一、弱交互游戏服务器 #
基于http通信模式的服务器,服务器架构和web差不多
二、长连接游戏服务器 #
在长连接中玩家是有状态的,消息传送的频率以及速度都快于弱联网游戏
第一代游戏服务器,单线程无阻塞 #
所有玩家的请求都发到一个无阻塞的消息队列中,由单线程处理消息
线程模型如下:
第二代游戏服务器,分区分服 #
单游戏服务器承载用户客户端有限,于是出现分区分服的概念,这种模型中一个游戏服务器就是一个平行世界,在第二代游戏服务器中同时也对进程和线程模型做了升级
- 多线程:每个线程处理一个特定的场景内的tick事件,如果玩家跨场景则通过消息投递的方式通知另一个场景线程来进行玩家数据同步
- 多进程:将网络、数据库的操作单独使用进程来处理,逻辑进程专心处理逻辑任务
第三代游戏服务器,世界服 #
第三代游戏服务器主要是世界服,分为以下几种演化
- 三层架构:包含网关服务器、游戏逻辑服务器、DB服务器
- 分片架构:将游戏逻辑服务器再进行分片,分离出如场景服务器、非场景服务器等
- 大世界架构:将世界按区块划分,各场景服务器管理不同区块
三、房间服务器,游戏大厅 #
主要分为大厅服务器、匹配服务器、对战服务器