编者按:
一直以来,中国网游在世界上都处于举足轻重的地位。从最早的端游到页游再到手游,不仅市场用户爆发式增长,近15年来网游技术的发展也是无比迅速。和单机游戏不同,网游除了游戏制作本身以外还牵涉到服务器端,再好的游戏如果出现链接、延迟等问题时也会造成巨大损失,这时候游戏运维便发挥了举足轻重的作用。中国网游的发展史,其实也是游戏运维的变革史,今天便由经典武侠手游《大掌门》运维掌门人吴启超来向我们讲述,进入游戏领域10余年来的风风雨雨。
有服务器的地方就有运维
如今我们说到游戏,可能想到的是火爆异常的VR,办公室里一言不合带上眼镜就地开打;亦或是刚刚虐了李世石的AlphaGo,扬言要挑战《星际争霸2》“教主”Flash。然而,除去这些还有一个游戏行业不可避免的潮流正在发生,那便是网络化。
这里说的不止是网游,前不久育碧旗下网游大作《全境封锁》上线时闹出个小笑话:由于很多国内玩家下载之前没注意是网游,下意识的以为育碧的游戏肯定是单机,好不容易下完之后才发现玩不上,进而发生了不少的骚动。这不是第一个发生这种情况的传统游戏厂商,肯定也不是最后一个,很多有名的游戏公司都在做类似的尝试,Popcap的《植物大战僵尸:花园战争》系列,暴雪的《暗黑3》等,甚至那些还有单机成分的大作也早就开始网络化:大名鼎鼎的《GTA5》、FPS风向标《使命召唤》系列和《战地》系列,网络联机部分的比重也在一年一年的增加。
网络联机,意味着玩家需要登录官方服务器,“有人的地方就有江湖”,这句话说的不仅是网游里的恩怨情仇,还包括游戏外的种种:“有服务器的地方就有运维。”这便是今天我们要说的话题——游戏运维。
游戏运维编年史
1,石器时代:端游
想要了解如今的游戏运维,不得不从早期的端游运维开始说起。对于08年入行端游,11年经历过页游最后14年全面接触手游的吴启超来说,这几年的游戏运维经历让他深切感受到运维思路的巨大转变。
1.1 端游的运维工种:IDC运维、系统型运维、网络运维、业务型运维、运维值班等。各个工种分工各有侧重。
IDC运维:装机、换配件、扛着2U的服务器全国各个机房来回跑。
系统运维:安装各种软件,调试各种不兼容的软件,在各种版本的Linux、Windows上。
网络运维:二层交换、三层交换、四层交换,还要区分华为、思科。
业务运维:24点维护,零晨2点维护,零晨5点维护,早上7点维护……
运维值班:0点盯着屏幕打电话,1点盯着屏幕打电话,2点盯着屏幕打电话……
运维开发:写着各种的逻辑,因为业务、网络环境、BUG、刚刚帮忙扛完服务器。
1.2 端游运维业务范围:在端游时代,大部分游戏公司都是自主做各种业务环境,做各种游戏业务需要的各种环境。
资产管理:服务器、交换机、各种服务分布位置,端口等。
下载服务器:搭建BT集群,做种子、分发,供玩家下载游戏客户端使用。
静态缓存服务器:squid + apache|nginx
邮件服务器:postfix +sasl +ssl 收发服务、反垃圾邮件服务。
网络质量监控:somkingping各个机房的交换,各个安放点服务器。
配置管理:nginx 、apache、lighttpd、MySQL。
批量管理:ssh公钥/私钥 。
监控管理:nagios、catcai 然后是c|perl|python|shell +rrdtool各种业务监控图。
1.3 端游游戏服务器架构:一般来讲都是以一组服务器集群为一个区服单位,单机上的进程提供不同的服务。
传统运维,任务道远,正因为有过去那些年的翻译文档,兼顾整合方案,以及大批分享技术的前辈、社区,踩着前辈一步一个坑的走过来,才能有今天的运维的局面。
2,青铜时代:页游
在2011-2013年左右的页游运维,游戏市场处于探索期,其实运维也处于探索期。端游时代每个新服都要经历上架、装系统,装服务的过程,一般一到两周可以上线一个区服,对于端游高粘性低流动的特性来说可能还好,但是当页游出现时,转变给运维带来的冲击无法估量。页游时代1天开100多个新服的概念,是传统端游运维所不能理解的。当时的运维认为页游就是把所有服务器实现自动部署服务,同时搭配运维自动部服工具就可以了。但事实上如果在开服时一组一组的使用物理服务器,开服速度根本跟不上,资源浪费还非常巨大,两周后用户留存率仅剩5%-7%。成本巨大亏空,急需技术转型,这个时间点上出现了两种概念影响了以后的手游以及云的发展。
1. 虚拟化技术
在2010年11月份左右, kvm出现在RHEL6中,去掉了RHEL 5.X系列中集成的Xen。正是这一次虚拟化技术的转型,而且当时市场的需要,在2011年-2012年掀起了一场私有云建设的风潮。在实践过程中,优点很多,但暴露的缺点也不少。在端游占主要市场的情况下,实践过程中表现出来的不适尤其明显。
a. 虚拟机时钟不准
b. 虚拟机网卡,超负荷down、丢包
c. 多虚拟机间争抢cpu、内存
d. 多虚拟机间的安全访问,虚拟机与物理机间的安全管控
e. 对于关系型数据库磁盘读写慢问题突出。
f. 等等
以上几点随着时间的推移有的已经然后解决,有的换上了代替方案。时至今日,端游在单纯的虚拟云上部署仍是问题,但是随着物理、虚掩混合云出现,这个局面应该可以被打破。
2. 社交化的页游
社区化的页游戏,为什么这样说呢,因为当时更多的页游信托社区入口,导入用户流量,当时最火的应该是人人网(校内网)的农场偷菜。然后是DZ论坛一堆农场插件袭卷全国,当然这一切都是为了增加用户粘稠度。但是也影响了页游技术的选型,当时基本上大家不约而的选用了于社区相同的LAMP的技术,从而降低开发成本及接入成本。当然现使用JAVA SSH2架构的页游也有。除技术选型外,同时还带入了另一个概念:联运。联运这个概念在页游时代对于端游运维就像一个恶梦,不同区服要随时跨服站,不同区服要随时可以合区,所有数据不再是以物理服务器为单位,而是要逐条打标签,再也看不到账号,只能拿着一串长长的KEY,四处兑换,然后拿着不知道所谓的表标问第三方…….
在这个时期,是运维开发的爆发年,随着虚拟化技术的推广,越来的越多的运维开始接触自动化运维的概念,开始了自动化运维的奋斗之路,开始了以项目管理的角度看待运维脚本开发。
3,黄金时代:手游
随着私有云转为公有云、云时代推动着云计算以及移动互联