该项目是一个基于Node.js平台中koa框架开发完成的分布式游戏服务器框架
项目说明
架构图

基础服务器
- web-server - Web服务器- 游戏前后台网站放置
- 游戏在线更新资源下载
 
- http-server - Http服务器- 管理游戏登录/注册/选择区服等http请求处理
- 管理游戏前后台网站所需http请求
 
- center-server    - 中心服务器- 负责框架内各服务器之间数据的通信转发
 
- connect-server - 网关服务器- 管理游戏客户端建立的socket连接
 
- game-server - 游戏逻辑服务器- 管理具体的游戏逻辑
 
工作流
- 客户端进入游戏前的登录、选择角色等HTTP请求,发送至http-server实现通信
- 进入游戏时将发送Token值至connect-server进行验证,验证成功将建立socket连接
- 游戏业务逻辑将请求至connect-server,然后通过center-server转发至game-server,在game-server处理具体逻辑或者再次转发至战斗、聊天等更细分的游戏服务器,再通过center-server回发至connect-server,最后发送至客户端完成通信。
抗压扩容
- 添加服务器- 部署更多的center-server、connect-server、game-server
- 将场景、聊天等数据量交互大的游戏逻辑独立出scene-server、chat-server等服务器,通过center-server转发,与game-server进行通信处理,再转发至connect-server,继而与客户端完成通信
 
- 部署更多的
- 配置更新- 更新服务器配置:./common/config/server.json
- 负载均衡管理:./common/config/server_config.js中的get[ServerName]Config
 
- 更新服务器配置:
常用API
- rpc_mgr: 封装一些服务器之间的rpc业务逻辑通信,是主要的跨服通信手段 
- center_mgr: 通过中心服务器转发数据至其他服务器 - rpc 转发 
- rpcAsync 异步转发 
 
- socket_channel:管理socket连接分组,批量回发等,每个socket连接时,均会添加分组 - uid=[uid]- aid=[aid]- pid=[pid]- [socketid],因此也用于单用户回发,仅存在于- connect-server,一般通过- rpc_mgr封装使用- send 发送数据 
- kick 踢出用户 可携带一个错误代码 
- genError 发送一个逻辑层错误代码 如密码错误等 
 
- [Model]:数据模型,可以有效的减少数据库读写压力,实体存在于 - game-server的- model_mgr中,一般通过- rpc_mgr封装使用,可保证所有服务器数据模型一致- [Model].baseInfo 基础数据 可通过 - get_[field]- set_[field]来读写
- [Model].upDBToData 从数据库更新缓存数据 
- [Model].upDataToDB 从缓存更新数据库数据 
- [Model].upClientData 更新数据到客户端 
 
- tpl:管理模板类 
