游戏服务器架构文档

不少同学或朋友都问过我,Java做游戏服务器跟Java web有什么不同,趁着这次这个游戏差不多完工,我写了一个服务器架构的文档,当然,每个人都能设计不同的架构,有好的有坏的,我这里给的只是我个人的一种设计,其中哪些设计不合理,还请多指教。由于写文档用的服务器上搭建的showdoc,一种免费的在线文档系统,使用的md,于是我就直接copy到简书来了,不过文档中的敏感信息都处理了,游戏名就不透露啦,服务器的ip端口,账号密码,更是不能透露啦。这里就让那些还不明白游戏服务器的同学们,大致了解下服务器的架构

****服务器架构文档

一、服务器架构图

根据需求,可将服务器大致分为登录服务器、逻辑服务器、文件服务器、支付服务器、国战服务器和聊天服务器

服务器架构图

1.服务器间进程通信

服务器之间的进程通信使用json-rpc,json-rpc的底层为短连接实现,通信为json数据格式

2.游戏服务器

服务器\属性 外网ip 内网ip 端口 管理端口
登录服务器 127.0.0.1 127.0.0.1 0 0
文件服务器 127.0.0.1 127.0.0.1 0 0
国战服务器 127.0.0.1 127.0.0.1 0 0
支付服务器 127.0.0.1 127.0.0.1 0 0
逻辑服务器 127.0.0.1 127.0.0.1 0 0
聊天服务器 暂无 暂无 暂无 暂无

3.Redis服务器集群

服务器\属性 外网ip 内网ip 端口 密码
Redis Sentinel集群 127.0.0.1 127.0.0.1 0
Redis主服务器1 127.0.0.1 127.0.0.1 0 123456
Redis从服务器1 127.0.0.1 127.0.0.1 0
Redis主服务器2 127.0.0.1 127.0.0.1 0 123456
Redis从服务器2 127.0.0.1 127.0.0.1 0

4.Memcache服务器

服务器\属性 外网ip 内网ip 端口
Memcache 127.0.0.1 127.0.0.1 0

5.MySQL服务器

|服务器\属性|外网代理ip|内网ip|外网端口|账号|密码|
|:-------- |:-------------|:-----------|:---|
|MySQL |无|127.0.0.1|0|root|123456|

  • 备注:开发阶段所有服务器部署在同一台物理服务器

二、逻辑服务器系统架构

其中,游戏逻辑服务器的系统架构如下:

  1. 游戏客户端为Cocos2d,与服务器交互采用Http通信,数据传输采用Json格式字符串
  2. 服务器端的网络层使用基于Netty实现的Http服务器
  3. 通过Netty接入客户端请求,根据请求数据中的协议号,调用服务器中相对应的逻辑模块
  4. 逻辑模块处理消息,若要处理游戏数据则调用Jedis或Hibernate处理,若触发某事件,则调用事件处理器
  5. 通过Netty的ChannelHandlerContext返回处理结果
  6. 客户端与服务器交互的数据通过XXTea+Base64进行加密处理

总结如下图:

系统架构图

三、服务器启动

服务器启动顺序如下:

  1. MySQL服务器
  2. Memcache服务器
  3. Redis Sentinel
  4. Redis Masters
  5. Redis Slaves
  6. 登录服务器
  7. 支付服务器
  8. 逻辑服务器
  9. 文件服务器
  10. 聊天服务器
  11. 国战服务器
posted @ 2016-09-09 15:49  Henry游戏开发  阅读(1204)  评论(0编辑  收藏  举报