图1 推荐的手游架构图
在设计这样的手游架构时,我们重点考虑的几个方面如下:
负载均衡器 :
使用商业硬件实现。采用商业硬件的负载均衡可以最大程度的保障业务稳定性。
使用双机热备(HA),规避单点故障。
使用NAT模式。在手游架构中,实际负责游戏逻辑的Web服务器组和玩家之间的数据流量,一般不大。根据我们的经验,在5万人同时在线的手游,带宽使用800Mbs左右。使用NAT模式的负载均衡方案完全可以满足需求;同时对于Web服务器来说,不需要配置外网IP,节省IP费用及提高安全性。
双上联的链接方式 :
负载均衡器和核心交换机使用双上联,避免单一核心交换机故障导致的网络中断。
接入层交换机接入核心交换机时,采用双上联,并且做PortChannel,保障双链路可用的情况下,同时提高吞吐量。
Web服务器组
:
配置高频CPU。作为手游逻辑的主要处理单元,Web服务器往往执行大量的CPU运算,比如玩家攻击能力计算、攻击效果计算等。
Memcached服务器组
:
这个服务组的作用一般包括预加载配置项以及缓存数据库查询结果等。使用Memcached提供的高效内存缓存,可以提高响应速度。
数据库服务器组
:为游戏数据提供持久存储。
在这样的架构设计中,体现手游运维对于高可用性、安全性、高性能的要求。在运维人员设计相关规划时,可以参考该架构进行实施。
最佳实践:手游容量规划
如上文所说,手游相对于端游的生命周期更短,因而留给运维人员的准备时间也就更少。这就要求我们在短时间内对手游运营需要的各种资源规划到位,手游容量规划是一个必不可少的环节。
容量规划(Capacity Planning),是指在系统上线前或系统运营过程中,通过分析业务走向,对系统需要的各种网络、计算、存储资源进行提前规划和准备。目的是在这种业务变化时,系统承载能力可以随着要求变化进行灵活的应对。
多线机房的选择
为了用户在3G、4G、WIFI(中国电信接入、中国联通接入、中国移动固网接入)等终端网络切换时得到良好的游戏体验,手游服务器需要部署在多线机房,由此可以很好的满足用户多种方式上网的需求。
如下图所示是我们某个手游玩家按照ISP来源的分布情况:
图2 手游玩家ISP分布
由上图,也验证了我们必须把服务器部署在多线机房,以满足不同接入的手游玩家。
多线机房的实现原理和特点如下:
多条光缆:数据中心为适应不同用户对不同网络访问量的不同需求,采用多条高带宽(例如40G)光纤链路连接到Internet。
10G出口带宽:连接到中国电信、中国联通的出口带宽均超过10G以上。
BGP4收取路由:各条链路均采用BGP4收取路由,并进行相应的策略设置,保证用户访问不同网络的访问速度。
各条出口互为备份:在其中一条链路出现故障的时候,所有流量通过其他链路出入,不会出现单链路故障,提高了可靠性。
突破限制:突破了ISP出口受中国电信和中国联通互连带宽瓶颈及访问国际网站的限制。
高速Internet接入、冗余的网络和带宽管理系统保证接入带宽可根据用户流量的需求随时扩充,充分满足用户日益增长的网络应用需求。
在选择和对比多个多线机房时,机房的冗余带宽、对抗DDOS攻击的能力,是评估的2个最重要方面。高冗余带宽(10G以上)、高抗DDOS能力(20G以上),是我们倾向的选择。
网络带宽容量规划
网络带宽规划的数据来源主要有两个:一个是在小规模测试时收集到的玩家平均带宽使用量,以kbps/每玩家计算;另一个是使用机器人(指能够模拟玩家进行游戏内容测试的自动化程序)测试时收集到的类似数据。
在进行网络带宽规划时,需要对以下三个方面的内容分别进行评估:
正常流量规划。评估方法是根据玩家在正常进行游戏时,每玩家带宽使用量与预估的同时在线人数的乘积。