游戏服务器架构文档
不少同学或朋友都问过我,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|
- 备注:开发阶段所有服务器部署在同一台物理服务器
二、逻辑服务器系统架构
其中,游戏逻辑服务器的系统架构如下:
- 游戏客户端为Cocos2d,与服务器交互采用Http通信,数据传输采用Json格式字符串
- 服务器端的网络层使用基于Netty实现的Http服务器
- 通过Netty接入客户端请求,根据请求数据中的协议号,调用服务器中相对应的逻辑模块
- 逻辑模块处理消息,若要处理游戏数据则调用Jedis或Hibernate处理,若触发某事件,则调用事件处理器
- 通过Netty的ChannelHandlerContext返回处理结果
- 客户端与服务器交互的数据通过XXTea+Base64进行加密处理
总结如下图:
三、服务器启动
服务器启动顺序如下:
- MySQL服务器
- Memcache服务器
- Redis Sentinel
- Redis Masters
- Redis Slaves
- 登录服务器
- 支付服务器
- 逻辑服务器
- 文件服务器
- 聊天服务器
- 国战服务器
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构