斗地主游戏重装系统硬盘分区没了显示不出来是怎么回事


· TA获得超过1.1万个赞

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的***。

游戏全区全服和分区分服  QQ斗地主嘚设计

QQGame防专线中断系统介绍

QQGame是一个全区全服的休闲类游戏平台和社区主逻辑服务器部署在四大IDC,核心DB全部在深圳对跨IDC的专线依赖度很高。

网平提供专线故障后切***的备份机制当***也中断时QQGame在线会下降到0.

窄带IDC、孤岛IDC无法提供游戏服务。

专线断了进行容灾无非是数据走外网。外网能抗住么其实木有人能告诉你。

1.公网包量、流量测试

压力:大约每分钟310w包每个包为139Byte

结果:在24小时之内一共传输个包,

成功个包失败24432个包。

24小时之内失败一共只有5次为网络抖动。

压力:大约每分钟40w包每个包大小为4k-10k

收包数等于发包数,无丢包

非高峰期(6月25日09点)测試结果如下表:


高峰期(6月26日21:30)测试结果如下表:

专线在闲时和忙时都很稳定

外网在忙时ping值会有升高,跨运营商(红色)的ping值可高达200ms. 不夸运營商的情况ping值低于100ms. QQGame跨专线的流量用于玩家登录服务器时获取DB数据游戏交互过程不受此延时影响,因此对于QQ游戏来说完全可以接受

外网狀况从包量、流量、网速三个方面都可以支撑QQGame跨地域服务器通信需求。

惨绝人寰的事情发生了。。

专线中断并且外网中断IDC处于孤岛狀态。


偏远地区时可以使用的节省带宽模式:

QQGame在具备防专线中断容灾能力前,一旦出现专线中断故障QQGame区域IDC的在线人数会迅速下降。。趋近于0在线。。恐怖。


7月19日的专线中断演习系统进行内外网切换的决策的几十秒内有在线的轻微影响。切换完成后在线完全無影响。

QQGame的防专线中断系统的设计思路首先将其作为一个旁路系统在standby状态时,尽量减少对系统核心架构的影响没有带来任何额外的专線流量。(NewLCDSvr Cache填充是由正常的专线数据在IDC内ByPass完成)

其次,作为容灾系统需要有自动化运营能力否则,真正专线故障时手动切换带来的時间损耗会大大降低系统的效能。

最后QQGame这种多地域、多IDC部署的全区全服系统有其自身的特殊需求,在具备了足够大的用群体后才有防专線中断容灾的现实需求在做系统设计的时候需要因地制宜为了产品、用户而去考虑系统设计,绝对不能为了容灾而容灾、为了设计而设計共勉。


浅谈全区全服架构的SNS游戏后台

首先说下分区分服和全区全服的概念查了一下资料,没有找到合适的定义说下自己的理解:所有游戏服务器都有玩家数据库,如果以数据库为单位划分 Set 单 Set 如果能承载超过10万的同时在线,可以认为是全区全服的游戏10W以下可以认為是分区分服的(10W只是个人的标准)。早些年设计的 mmog 游戏游戏交互频率高要求网络延迟低,需要就近接入所以大多采用分区分服的方式。而 SNS 游戏以好友关系链作为主要玩法,单服需要大量的注册用户且对网络延迟要求不高,所以大多采用全区全服的方式

全区全服並不是说一个游戏只有一个大区。比如逆战分了电信区和网通区两个独立的大区,就近部署服务器减少网络延迟给玩家的影响,类似嘚还有 QQ 飞车等

全区全服的SNS游戏代表有 QQ 农场、摩登城市、夜店之王,分区分服的游戏代表有幻想、御龙在天等

接下来以摩登城市( QQCity )为唎,谈谈在全区全服的 SNS 游戏开发中遇到的问题QQCity 是一款模拟经营性质的 SNS 休闲游戏,以城市建设为主线融合偷菜的玩法,最高在线人数上┿万日活跃上百万。后台架构如下图所示玩家进入游戏,首先通过 DIR 服务器获取 GameServer 的 IP 建立长连接,所有的游戏逻辑都在 GameServer 上实现玩家在遊戏过程中数据发生变化时通过 DBServe r写入全内存数据库 TMem 。玩家拉取关系链、付费、防沉迷及日志服务器等辅助模块则通过 tbus 组件与 GameSvr 通信

全服全垺游戏在设计和部署中一些不同于分区分服的地方,从以下4个方面大概说一下:

对于SNS类型的游戏PCU到达10w甚至100W都是有可能的,所以在服务器設计之初就要考虑所有的功能模块都要具有可平滑扩展的能力通过上面的架构图我们可以看到,摩登城市的GameSvr、DBSvr、TMEM以及辅助模块都是以服務器组的形式出现的对于某个功能都有几台服务器一起分担外部的请求。由于SNS游戏的特性在做扩容的时候最好能做到不停机。

由于 GameSvr 之間关系相对独立在不停机增加 GameSvr 的时候我们只需要将新增加的服务器与各个内部的功能模块之间建立通信关系就可以了,摩登城市游戏服務器之间通信使用了 TBus 组件tbus 支持动态的刷新通道,我们所需要做的工作只是让辅助模块以及 DBSvr 能够动态的发现新增加的 GameSvr可以通过 reload 或者定时檢查的的方式实现。

前面已经说到登陆游戏首先向 Di r服务器请求 GameSvr 的 IP,所有 GameSvr 向 Dir 定时上报当前负载、提供服务的 IP 和端口所以新加服务器的就會暴露给外面玩家。

DBSvr 与各个辅助模块想要不停机动态扩容的话相对来说复杂一些。难点在于新增服务器要分担其他服务器上的负载,偠保证服务的无状态性举例来说:玩家A上次请求是通过 SocialSvr1 拉取好友关系,这次的请求能否通过新增的 Social2 来执行取决于 SocialSvr1 上是否有保存影响到拉取好友关系的临时信息(如 SessionKey 等),如果没有说明 SocialSvr2 可以相应A的请求,实现动态扩容

TMem已经实现了动态扩容的功能,并且在运营摩登城市嘚过程中经过了实战检验。

谈到平滑扩容就必须聊聊负载均衡了对于同一个功能模块的一组服务器如何实现压力分担,就是个人理解嘚负载均衡

1.逻辑服务器(GameSvr)的负载均衡

逻辑服务器是直接与玩家进行网络通信的服务器,实现负载均衡有一些现成的解决方案如LVS、TGW 等,都可以达到网络层的平均负载摩登城市没有选用这些方案,而是增加了Dir服务器可以应用到一些特殊的场景,更加灵活控制每台逻辑垺务器是否开启和在线人数从运营后的数据来看,电信玩家与联通玩家数量比大概为2:1所以现在外网电信GameSvr的数量是网通的2倍。

2.功能模块嘚负载均衡

QQCity 采用按 QQ 取模的方式实现这样做好处有两点:

实现简单,逻辑服务器向后端发送请求时只需要取模的方式确定发送到哪个 IP

定位问题方便,可以确切的知道处理单个玩家逻辑是哪台服务器

3.数据库 TMem 本身具有负载均衡的机制。

摩登城市的容灾方法基本是依靠心跳包检测服务器状态实现的。

上面已经提到逻辑服务器会定时发送心跳到 DirSvr ,如果某台 GameSvr 出现宕机

或者硬件问题上报心跳包超时,Dir 就会把它設置为不可用状态不会再把这台服务器推送给新进玩家。已经连接到这台服务器的玩家通过刷新页面的方式会重新连接到可用服务器

當这台服务器恢复后,上报心跳包给 DirSvrDirSvr 将其设置为可用状态。

玩网游的人都知道一句话世上最远的距离不是从美国到中国,而是从网通箌电信作为网络游戏的开发者,如果不考虑国内的网络环境将会死的很惨。一些从国外引入的游戏都或多或少的面临着网络的考验。

前面已经讲过SNS 类的游戏对网络延迟的并不是很敏感。所以摩登城市的服务器没有就近部署而是集中部署在上海市北 DC 和上海江场联通機房。

考虑到电信用户数量要远远大于联通用户所以所有功能模块、数据库、电信 GameSvr 都部署在上海市北 DC,部分联通的 GameSvr 部署在上海江场机房联通的 GameSvr 拉取玩家数据以及其他请求通过同城专线。

以上几点是在开发摩登城市过程中的自己的一些心得体会难免会有偏颇,希望各位夶神斧正有说的不明白的地方欢迎骚扰。最后为现在所做的项目将魂做个广告将魂是一款三国背景的战棋类回合制网页策略游戏,有風格各异的武将、刺激多样副本和精美的动漫画面风格既可以游戏中体验经典的三国历史故事,又可以收集各种武将并带领他们去参加各种激烈的战斗哦!

参考资料

 

随机推荐