先说说背景
- QQGame是一个全区全服的休闲类游戏平台和社区,主逻辑服务器部署在四大IDC,核心DB全部在深圳。对跨IDC的专线依赖度很高。
- 网平提供专线故障后切V**的备份机制,当V**也中断时QQGame在线会下降到0.
- 窄带IDC、孤岛IDC无法提供游戏服务。
再说说分析
专线断了进行容灾,无非是数据走外网。外网能抗住么?其实木有人能告诉你。
1.公网包量、流量测试
24小时包量测试:
压力:大约每分钟310w包,每个包为139Byte
结果:在24小时之内一共传输2202271493个包,
成功2202247061个包,失败24432个包。
失败率:0.0011%,
24小时之内失败一共只有5次,为网络抖动。
12小时流量测试:
压力:大约每分钟40w包,每个包大小为4k-10k
结果:深圳IDC入流量:100Mb/s,出流量: 150Mb/s,
收包数等于发包数,无丢包
2.网速测试
非高峰期(6月25日09点)测试结果如下表:
高峰期(6月26日21:30)测试结果如下表:
测试数据表明,
专线在闲时和忙时都很稳定。
外网在忙时ping值会有升高,跨运营商(红色)的ping值可高达200ms. 不夸运营商的情况ping值低于100ms. QQGame跨专线的流量用于玩家登录服务器时获取DB数据,游戏交互过程不受此延时影响,因此对于QQ游戏来说完全可以接受。
外网状况从包量、流量、网速三个方面都可以支撑QQGame跨地域服务器通信需求。
最后说说设计
正常状态下:MainSvr-àProxy---(专线)-àGameDB
专线中断了:MainSvr-àProxy--àOfProxy----(外网)-àObProoxy-àGameDB
惨绝人寰的事情发生了。。。。
专线中断并且外网中断,IDC处于孤岛状态。。
孤岛模式: MainSvr--àProxy--àOfProxy--àNewLCDSvr
偏远地区时可以使用的节省带宽模式:
MainSvr-àProxy--àNewLCDSvr(合并流水后发包给DB)---àOfproxy----(外网)-àObProxy--àGameDB
全貌图:
看看效果吧
QQGame在具备防专线中断容灾能力前,一旦出现专线中断故障,QQGame区域IDC的在线人数会迅速下降。。。趋近于0在线。。。。恐怖。。
7月19日的专线中断演习,系统进行内外网切换的决策的几十秒内有在线的轻微影响。切换完成后,在线完全无影响。
写在最后
QQGame的防专线中断系统的设计思路首先将其作为一个旁路系统,在standby状态时,尽量减少对系统核心架构的影响,没有带来任何额外的专线流量。(NewLCDSvr Cache填充是由正常的专线数据在IDC内ByPass完成。)
其次,作为容灾系统需要有自动化运营能力。否则,真正专线故障时,手动切换带来的时间损耗会大大降低系统的效能。
最后,QQGame这种多地域、多IDC部署的全区全服系统有其自身的特殊需求,在具备了足够大的用群体后才有防专线中断容灾的现实需求。在做系统设计的时候需要因地制宜为了产品、用户而去考虑系统设计,绝对不能为了容灾而容灾、为了设计而设计。共勉。
游戏VPN 连接游戏VPN 连接