作为一个网络游戏,虽然目前游戏内的许多设定我们还在补充,我们抛开江湖X的游戏业务层面的设计,纯介绍一下江湖X的服务器技术框架。
先简单介绍一下几个核心技术点:
- 江湖X是一个基于长连接的网络游戏
- 江湖X运维托管依赖于公有云环境,当然,也可以独立部署
- 江湖X支持一部分非核心代码的热更新
- 江湖X的设计目标为同服容纳同时在线数千玩家,容纳百万级玩家信息
- 能做到10秒级的全服/单个账号精确回档
再说一下开发基础和选型原因:
我们工作室人丁稀少,而且也非纯技术向定位(我们都一起做策划、运营、运维甚至是美工、音乐啦)……之前也没有游戏行业的代码积累,所以我们大部分东东能用开源的就用,能用付费的也用。一切的核心为的是提高生产效率、降低工作量、并且提高运维稳定性,当然,也在一定程度上考虑了未来的可扩展性。
下面直接上系统架构图
解释:
- 账号服务器是全局唯一的,一个账号可以登录我们所有的游戏服务器。主要账号登录信息、支付信息、账号登录TOKEN(判断同一账号是否重复登录),采用J2EE开发
- 游戏服务器使用SCUT编写,与客户端之间通信采用socket长连接,使用C#开发
- 数据库使用的redis+mysql,所有登录激活的账号才会进入redis,否则数据序列化存在持久化存储里。
- 数据库使用公有云提供的高可用方案,秒级落盘。所以可以做到秒级回档。
- WEB服务器挂接了CDN,提供游戏下载、各种活动页面、服务器列表、公告发布等等
- 聊天、统计和第三方登录/支付、短信服务 均属于外部系统,直接使用的云服务。
- 客服/GM系统是我们管理员的操作后台,采用PHP编写
- 公有云我们目前使用阿里云和UCLOUD
- 聊天服务器使用亲加云通讯
- 第三方登录/支付包括 支付宝、微信、苹果等
- 短信服务使用的容联云通讯
- 统计服务使用的友盟
- 账号服务器、数据库等均外网隔离
- 游戏服务器、WEB服务器等均使用云服务器提供的防火墙,并且做了一系列的安全方案
根据测试情况和目前的运营情况,若干结论性的东东分享:
- SCUT服务端还算稳定,可用。代码没问题的情况下,同一个实例支持几千并发应该比较轻松。
- redis很强大,但是要注意控制其内存
- 阿里云服务器的磁盘读写性能很差
- CDN未必可靠,需要程序支持备份切换方案
- 目前的公有云环境确实是高可用,基本没有出过什么问题
我接下来的文章将深入到具体的每个模块和逻辑讨论技术细节,有兴趣的同学欢迎与我交流。