『码农虾扯蛋』之游戏后台杂谈(叁)
前文回顾:
码农年后来一发,不过发现不但元宵节过了,三八妇女节都过了,撸主在此小心的问下,美女同事和更多的妇女用品们,三八过的快乐吗?
7、关于部署
闲扯了半天的虚货,终于要落地了,架构图上的总是虚无飘渺,在真实生产环境把东西搭建起来,才算是真正的完事。而且同样一套架构,部署方案不同,最终结果可能和预想天差地别。说白了,架构设计就是本武功秘籍,部署搭建是修炼,tm是练成乔峰乔帮主还是路人宋兵甲,就看部署的功力了。
往大了说,部署要考虑服务器(机型、IDC等)和网络连接(运营商、专线等)。不是吹牛B,经历鹅厂通道考验出来后台攻城狮都是少林寺十八罗汉级别,机型专线知识杠杠的,这可不,通道有要求么,了解多了还真不是坏事。要不了解各种专线性能和成本,把逻辑和数据层放在天津和深圳靠着昂贵的专线做实时交互,还尼玛一天到晚的吐槽为毛延时那么大那么不稳定吞吐率为何那么次代码写的如何优雅架构设计的多么精妙出现这样的结果简直是老天不长眼灵异现象需要CCAV的《走进科学》来砖家会诊一下,信不信你家技术老大跳起来拿刀把你的××砍成十八段?!
吐槽也吐的差不多了,简单聊聊部署这块咱们可以关注些啥。为毛不深聊,水平不够聊不下去,哥您放过我可以么。
1. 服务器
最简单直接的就是服务器,代码撸完了总得有个地方跑起来吧。早些年呢,大家都得自己买服务器,租也有,买的还是多点,什么样的配置合适,稳定性好不好,都是要考虑的,毕竟,买服务器不是攒机装电脑,配置光NB就行了,如果哪位哥对还处于攒机挑性价比,要求硬件性能无比牛逼的水平,那么不好意思,选服务器这活基本和您无缘了。性能不会是服务器选择的第一考量点,首先得是稳定啊,要不稳定,搞个鸡脖,三天两头的宕机故障,这尼玛做服务器做运维的还要不要活啊,容灾虽然要做但要天天都容因为服务器选择导致的这个灾那个灾,撸主建议不如先把挑服务器的那货给毙了然后再换些稳定的服务器来的靠谱。
至于如何挑选稳定的服务器,水深的一B,要的专业知识性太强,绝壁不是赛格华强北或者是淘宝小掌柜三言两语的忽悠能搞定的,哪怕是口碑好之前很稳定的服务器,就算是同品牌同型号,不同批次,也可能存在稳定性等不一样的情况。这个坑太深,我就不往下跳了。
对于一般开发者,挑好合适配置的服务器是最直接的,都是成本啦,如果您要有钱任性,就直接买最好最NB的。
说到这,鹅厂的小伙伴们得学会感恩啦,你见过几个做业务的操心过服务器本身的问题?最常见的就直接给个机型信息就完事了,但这后面各种坑爹的故事,确是TEG以及各运营部的兄弟们帮咱们给扛走了,还不赶紧跪谢默默无闻的帮着咱们的大爷们啦!
话聊到这,撸主忍不住再跑个题,设计架构的时候,其实有很多考虑的前提条件,很多同学可能习惯了,顺手就来,也许已经忘记了其中的部分前提,其中一点,就是服务器的稳定性。游戏和一般互联网产品后台的服务架构,基于的服务器的可靠性。综合磁盘、内存、RAID卡、电源、主板(排名基本分先后)等各种故障,常见的廉价服务器的故障率,一般在千分之几的水平,这说明啥,说明大家默认服务器是必然会在某年某月抽风的,具体啥时候,不知道而已。因此,做架构设计的时候,其实已经是假定了服务器不够稳定的前提。按之前Google某攻城狮的说法,靠堆人玩三班倒拼RP,是能够保证业务层三个9可靠性的,要达到四个五个甚至更多9的可靠性,就得靠容灾等架构设计和实践来保障了,这就是体现咱们这些夹狗湿能力的地方啊!!!
撸主个人认为,这也就是为啥昂贵的大型机依然富有活力和竞争力原因之一,在有的行业里面,容灾设计不像它在游戏和其他互联网服务器那样的被频繁的提到,其实并不是他们不考虑或者不重视容灾,而是行业性质以及对硬件的要求决定了这些行业的产品架构设计。您要那咱们用的这些屌丝服务器去替换传统银行的大型机,机器成本是省下来了,但估计过不了多久企业也得关门了,各种故障遭不住啊。当然也不要迷信大型服务器,毕竟之前也出现过中行采用的IBM大型机在运行过程中突然宕机,时间长达4个小时的故障。
最后用个笑话给这段结个尾,大学的时候学校内部有个非常火爆的bbs,飘渺水云间(这玩意是啥懂的自然懂,耗费在上面的都是撸主这样骚年宝贵的青春啦),服务器在计算机学院的小机房里面,曾经出现过一个非常无语的隔屁事件,服务器断电了。按理说不可能啊,机房并没有断电,即使服务器本身短时断电也有UPS撑着,足够时间让师傅来修复的。结果检修的时候,发现是插服务器电源的插线板烧坏了,而且,UPS也是插在同一个插线板上的……
杯具啊!
2. 关于云
现如今呢,服务器是不怎么买了,都改云了,什么都tm是云,你要再自己买服务器,出门都不好意思和同行打招呼。流行有流行的理由,甭管是AWS还是腾讯云阿里云,一流大公司提供的云服务,绝逼是自己买服务器去折腾各种环境完全无法比拟的,别的不说,你要是机器故障或者是遇到天灾人祸了,云服务商会帮你扛,实在不行投诉去啊,也能推动下,要换成自个折腾,乖乖,机器挂了你要联系一线处理查明原因完了再确定解决方案,时间上可耗不起,而且还不太可控,换成云服务,一切都妥了。当然,之前也有人吐槽腾讯云阿里云出现故障恢复慢啊什么,没错,确实都有改进空间,不过,各位爷,您信我一句话,要这些维护全都搁你手里,啥××玩意都自己来,还指不定慢成什么鸟样呢。
还有个好处,云化以后,便宜了,各种虚拟化,既减少了服务提供商的成本,也减少了用户的开销,双赢。另外,云服务商一般不仅仅只提供服务器,还会附带各种NB的服务,从文件存储、CDN到数据库到安全等各个方面,而且服务相对而言都是非常优质的,仅以鹅厂的腾讯云为例,CDB提供的服务性能以及可靠性,就不是普通人自己倒腾DB折腾MySQL能够轻松达到的。
哎哟,别tm打我,我真没收钱,我没给腾讯云打广告!
最后说个小故事,之前项目组招聘,面试过一个在小创业团队负责后台的兄弟,那时候国内的云服务已经相当成熟了,他们的游戏,依然采用自己购买服务器自己搞定一切的方式,比较好奇为何要这么说,那位兄台给的答复是,自己买自己弄放心,OK,您说你放心总得有理由吧,问了一些常见异常情况的处理方案,得到的答复是相当相当不让人放心,当时我的心情是这样的:
3. 机房和网络
买了服务器,总得有地方放吧,或者是你在租服务器的时候,也得想想租哪的吧,你要做个湖南湖北什么本地的棋牌游戏,最后把服务器整到东北去,这网络情况,可不一定是可以接受的。就近部署搞定了,架构里面的各个模块,是否能塞到一个机房里面去,也是个问题,尤其是有一点规模以后,如果不在同一个机房,那么跨机房访问的问题,就得列入考虑范围了。同城还好点,异地访问的话就有点蛋痛了。
提到机房,少不了得简单的聊聊网络,聊网络,就得聊两个,一个是对外的,一个是对内的。
对外,就看用户如何接入,天朝网络环境垃圾的一B,电信联通移动教育网各种小运营商各种中间环节,想想都要吐血,自己去处理的话麻烦,最简单呢,找三通机房,鹅厂的兄弟比较有福,有TGW以后,多运营商问题基本别人给你搞定了,接入下就完事,不过不要忘记,在外面水深火热的世界里,还是有很多吃不饱穿不暖的兄弟为这些事发愁呢。
对内,就是服务器之前的通信,是否有专线依赖,如果有,大致情况是怎样的,是同城还是跨城等等。这些因素最终都会影响到购买专线服务的决策,买多了,浪费;买少了,高峰期扛不住压力影响业务;能够同城部署的非得搞成跨城,成本高一大截……
外面的小公司还会遇到各种各样您能想到和想不到的问题,举一个小例子,某省在某些时段会限制出省的流量,导致一些业务,通常是些小公司的业务在那些时段访问极慢,甚至无法访问,请问,如果你在小公司里面打杂,你有什么办法么?
8、关于监控
这是个无论公司大小业务大小都得关注的一个问题。不难理解,游戏上线了,运行的好不好,业务有没有异常,性能是否接近瓶颈,存储容量如何,是否需要扩容缩容等等问题,光是看着黑乎乎的服务器,是没有答案的,它不是魔镜啊。最终,还得是靠监控系统,无论是完备,还是不完备的。
监控的内容涵盖硬件和软件。硬件层面,各种组件诸如故障大户磁盘等的健康状况,以及CPU、内存、网络、磁盘IO、丢包率等各种实时数据,都是需要关心的;软件层面,则和业务紧密相关,各种缓存、管道、事务的使用数量和百分比,各种关键操作的信息、各种重要物品/代币等的产出和消耗,以及各种事务处理的频率和成功率等等各式各样的内容,都可能需要。
看起来很复杂的,对吧,其实就是很复杂,监控系统,本身就是一套大工程,如果各位看官把他就当作是一个游戏业务,而成百上千的服务器和数不清的业务进程就是他的玩家,不停上报的数据就是玩家频繁的请求,区别是这些“玩家”的数量和操作频率,相对线上真实游戏而言,是相对可控的。游戏逻辑本身呢?就是把各种监控数据分门别类按需保存和展示。所以,怎么做服务器后端系统,就可以借鉴过来做监控。
个别初来乍到的新游戏后台鹅可能会觉得,咱们接触到的监控系统好像并没有那么复杂哇,之前导师安排任务的时候,好像接几个API,申请一下告警ID,按需上报下数据什么的就OK了,短信微信自然来。
小兄弟,你可别忘了,你接的那些系统,比如tnm2等,都是给咱们做服务的支撑部门兄弟们抛头颅洒热血艰苦奋斗干出来的,要不,你哪这么容易折腾监控啊,不信,问问那些在创业团队坑着的兄弟们,找个好用靠谱的监控组件,都是件难事啊。
监控这事,也是个逐步完善没有止境的优化过程,而且随着业务的变更,监控也得跟着变,要不跟不上形势,就坑爹了。细节呢?撸主才疏学浅,就不班门弄斧了,回家接着撸片学习去,有空不如多看看之前的前辈高人留下的宝物,能有所心得。
9、关于网络攻击
又是个鹅厂同学幸福甜蜜,外面小团队苦逼无奈的话题,说个小点吧,DDOS,常见的网络攻击手段之一,简单、粗暴、有效。什么是DDOS呢,撸主这里就不废话解释了,不了解的看官请自行Google吧,之前扯淡的东西已经和二手擦屁股纸一样够臭够长的了。既然DDOS这么屌,有没有防范的手段和措施呢,有,不过这不说,一来撸主不是做这个的水平够烂,二来是Google搜下资料也不少,就不显摆出丑了。嘿!妈蛋撸主什么时候这么屌啦!
你不说可以,我自己去Google自己去应用,总可以了吧,在此,撸主又要表示:即使看懂了明白了,想防住DDOS,呵呵。
为啥,说到底,要建设能防住××量级的DDOS攻击的系统,是要下血本要花钱的,而且,是大把大把的钱。一般的小团队,哪里来的这么多资金投入到攻击防范上?所以只要能做敢做,基本上一个打一个准。还记得今年,不对,去年,2015,阿里和艺龙都有遭受过大量DDOS攻击的案例么?不同之处是,阿里有自己的云盾系统抵御过去了,而艺龙没有,结果呢,就隔屁了,服务一度完全无法访问,最后紧急接入腾讯的大禹系统,完成流量清洗恢复正常服务。试问,如果艺龙都做不到,其他更小的团队又有多少可能呢?自己做不可能,就花钱接入吧,毕竟,这个钱还是能花的起来的,具体多少?阿里和腾讯云官网上有,感兴趣的不妨自己看看好了。
撸主说了这么多,为毛鹅厂小伙伴自己的业务好像没啥感知啊,一直都运营的平平稳稳的,其实呢,这还是得多亏负责基础建设的兄弟部门,没有诸如宙斯盾等防护系统,基本上大家都要去路边捡破烂了,你觉得天天骂小马哥骂腾讯游戏坑钱没钱玩个jb的人里面没有几个会来折腾咱们的么?妥妥的有,只不过是有基础系统给咱们给挡住了,这就是开头所说的鹅厂小兄弟幸福所在,所以说,人啊,身在福中要知福,怀抱感恩之心。
OK,今天的扯蛋到此结束,撸主要去撸铁了。神马?你不知道撸铁,咯,看看:
啊?这个不正规?这个俩总正规了吧: