小手游公司的容量规划

2016-11-05 01:11:00
raindy
原创 782
小手游公司不像T记和N记这种大厂,上来都是按G的带宽和上万台的主机购买,那都是财大气粗的主。我们对于主机资源的规划是精细到个位数,带宽规划则是精细到10M级别,力求把资源都用到刀口上,在让效益最大化的同时不影响业务的发展,用一个字来形容就是“抠”,抠门的抠。以下试图以一个项目在不同的生命期所进行的容量规划来进行阐述。

1.内部开发期
此时测试项目一般仍在早期研发,最需要两种资源:内部服务器+打包机。
内部服务器一般从运维部门构建好的proxmox集群里面创建出来即可,在公司内网创建的proxmox集群基本都是使用项目下线的硬件,一般有>80台KVM的规划冗余。
打包机则基本都是使用安装了SSD硬盘的PC+苹果垃圾桶,有时多个项目会共用一台打包机,分布式打包的方案需要的机器更多一点,打包机必须用物理机。什么!!用虚拟机打包?别开玩笑了伙计。。。。
内部开发期服务器都是放在内部网络,最LOW也起码是千兆局域网了,所以不存在带宽问题。

2.测试期+小规模对外测试
测试会增加具备外网访问能力的KVM服务器作为测试服务器,我们会采用两种方案:
第一种:我们会在带宽单价便宜的单线机房,或者稍远一点的多线机房购买一个柜子,一个柜子大概能塞下12台1U的物理主机+1台48口交换机,VLAN划分好主机的内/外网口,采购100M~200M的带宽,这样规模一个节点的费用大概是12K~15K/月的开销,使用proxmox创建>80台KVM规模的小集群,基本可满足10个以上项目的小规模对外测试(每个测试项目大概200~3、1000在线玩家)。
第二种:向企业带宽提供商购买具备固定IP的带宽,直接拉到公司机房,带宽也不需要太多,10M~20M即可,然后用防火墙直接NAT到内网的开发服务器上,相对于第一种方案,这种方案更加节省。

3.公测+正式运营
这个期间的项目会同时增加几种设施:(1)压力测试设备;(2)审核服;(3)运营服。
硬件和带宽会采用BGP IDC+云主机混用的策略,阿里云,腾讯云,AWS,linode,什么方便用什么,做好各种切换预案,胆大心细。此时的带宽+主机规划会根据业务的趋势规划的更加精细,根据实时情况随时把流量飞到云主机上承载,云主机的扩缩自由度很高,这样就不会受限于与IDC服务商的各种沟通和合同修改中(痛苦~~~)。
得益于skynet稳定的用户模型,服务器带宽规划相对简单,skynet模型下一个玩家的客户端交互是 2.0Kbits~3.5Kbits,所以,很容易根据运营部门的最高在线客户端规划进行估算:
带宽需求 = 2.0K * 预估最高在线玩家数 * 系数(1.2~1.5) ,当然这个估算不包含认证部分+补丁提取部分的带宽。

还有几样基础设施必须说一说
(一)VPN,方便码农随时从家里连回公司抓虫打补丁,并从打包机推送补丁到项目上,这个不深入描述,只说一点,VPN必须开二次验证(我司使用google验证器进行二次验证),安全是第一位的。
(二)DNS,内网DNS开放WEB接口给码农自行定义所负责项目的内网测试域名,外网测试+正式运营的域名则由运维人员按工单配置,但必须测试项目是一套域名,正式运营是另外一套域名,不能混淆。
(三)CDN,CDN的使用应该是贯穿整个项目的生命周期的,快速下载补丁并热更新游戏客户端,是玩家继续玩你家游戏的第一步要素。有一个规则需要遵守,CDN的回源服务器或者补丁资源提取服务器,不能和正式运营的game server放在同一个带宽资源下,把可能会发生的事故可能性变为0%。
(四)一张稳定的WIFI网络,手游公司最多的就是各种移动设备,手机+各种PAD+移动电脑,平均每个员工有3台移动设备,曾经录得我司最高峰的无线在线设备数是380个(我司200人),我们使用的是UBNT+netgear混用的方案,使用radius+openldap组成一张802.1x无线局域网,可用性勉强能做到4个9(每月30分钟故障),有故障的时候稍微调整一下AP参数和功率基本就能解决问题。
(五)备份设备的容量规划,昂贵的商业方案不适合我们,我们的备份设备一般是采用2U服务器+多个4T硬盘的自建RAID方案,每个在线项目准备两个16T的RAID10盘阵,按时间序列压缩并备份所有的用户+日志+分析数据,直到数据占RAID空间超过80%,超过部分则会远程PUSH到收费云磁盘上(七牛云和阿里云oss都是可选的方案)


小手游公司的容量规划还有很多细节末节的东西,可以说是一项需要细致冷静也需要有一定想象力的工作。小公司看事情的角度可能和很多大公司不一样,多少显得小家子一点,让各位见笑了。