专栏首页马同星的专栏QQGame防专线中断系统介绍
原创

QQGame防专线中断系统介绍

先说说背景

  1. QQGame是一个全区全服的休闲类游戏平台和社区,主逻辑服务器部署在四大IDC,核心DB全部在深圳。对跨IDC的专线依赖度很高。
  2. 网平提供专线故障后切V**的备份机制,当V**也中断时QQGame在线会下降到0.
  3. 窄带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部署的全区全服系统有其自身的特殊需求,在具备了足够大的用群体后才有防专线中断容灾的现实需求。在做系统设计的时候需要因地制宜为了产品、用户而去考虑系统设计,绝对不能为了容灾而容灾、为了设计而设计。共勉。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 2018最Fashion的相亲模式——Marry Chain!

    未来10年中国人对婚姻质量的要求会越来越高,愿意为这一“终身大事”投入很多费用,加之政府的极力鼓励和倡导,未来中国婚恋相亲市场将会呈现一个井喷式的增长阶段。 区...

    用户1310347
  • 如何用 R 绘制交互式社会网络图?

    最近有个学生问我,如何绘制交互式社会网络图(Interactive Social Network Graph)?

    用户2930930
  • Linux 遭入侵,挖矿进程被隐藏排查记录

    今天来给大家分享下这两天遇到的一个问题,服务器被挖矿了,把我的排查记录分享下,希望能帮到有需要的同学。

    程序员同行者
  • 浅谈图数据库

    下面这张图是一个社交网络场景,每个用户可以发微博、分享微博或评论他人的微博。这些都是最基本的增删改查,也是大多数研发人员对数据库做的常见操作。而在研发人员的日常...

    NebulaGraph
  • 机器学习实战--住房月租金预测(1)

    上次分享的从0开始如何用一个月杀进机器学习比赛Top25%受到很多小伙伴的支持,今天继续分享这次比赛的收获。本文会讲解数据集的分析。话不多说,我们开始吧!

    不羁的程序员小王
  • TiDB 源码阅读系列文章(二)初识 TiDB 源码

    本文为 TiDB 源码阅读系列文章的第二篇,第一篇文章介绍了 TiDB 整体的架构,知道 TiDB 有哪些模块,分别是做什么的,从哪里入手比较好,哪些可以忽略,...

    PingCAP
  • PhpStorm 配置 Laravel 智能提示

    本文介绍了 PhpStorm 下的 Laravel 智能提示。 配置 composer 设置中搜索 composer 进行设置 安装 laravel-ide-h...

    康怀帅
  • 【Rust投稿】从零实现消息中间件(6)-CLIENT

    client实现功能相对比较单一,就是能够向服务器pub消息,然后就会说订阅消息,订阅的主题收到消息以后能够得到通知.因此总结起来就是下面三个功能:

    MikeLoveRust
  • 黑客可利用PDF文件获取Windows凭据

    Check Point安全研究员Assaf Baharav透露,PDF文件可以被恶意行为者武装化,以窃取Windows凭证(NTLM hashes)而无需任何用...

    FB客服
  • AngularJS实现跨域请求

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。

    奋飛

扫码关注云+社区

领取腾讯云代金券