作者丨郭智文:腾讯高级工程师,手机 QQ 运维负责人。多年来,对移动互联网应用的接入质量度量、优化有丰富的实践经验,专注于业务架构优化、弹性伸缩、运营服务管理、帮助产品打造极致的技术基础和质量口碑。
12 月 16 日,首期沙龙“海量运维实践大曝光”在腾讯大厦圆满举行。沙龙出品人腾讯运维技术总监、复旦大学客座讲师、DevOps 专家梁定安,讲师腾讯手机 QQ 运维负责人郭智文,腾讯高级工程师魏旸,腾讯 SNG 资深运维专家周小军出席沙龙,并带来精彩的技术分享。为了便于大家学习,特将本次沙龙讲师的演讲内容进行了整理。您也可以在腾讯织云公众号下载本次演讲 PPT。
手机 QQ 起源于 2003 年前后,到 2008 年同时在线用户数到达 500 万,到 2009、2010 年就已经达到千万级别,到 2013 年就突破亿级级别,短短 5-6 年时间,增长了 200 倍,2016 前后达到 2 亿级别。
问题:
2014 年 12 月 4 日早上,收到手机 QQ 监控告警,重庆联通部分用户访问异常。重庆联通 2G、3G 用户到所有 IDC 的网络质量变差,表现为丢包变高。但对比组重庆联通宽带 Wifi 用户质量正常。
我们从客户端上万日志监控里面看,在 12 月 4 号凌晨,发现重庆那个地方从 3%涨到 4%左右,其它的有些涨到 10%。
业务运维同事通过腾讯网络中心联系到重庆联通网络负责人,经过多轮沟之后,确认确实是运营商在凌晨时段割接网络引起,运营商与厂商经过两次调整最后故障才得以解决。
通过上述例子,我们可以发现,在用户与业务服务器之间,存在着一个漫长的路径: 从手机侧到附近基站,再到移动的 GGSN,再经过互联网骨干网,再到腾讯服务器。
QQ 日活跃用户有 6 亿多,这么多的用户数,除了分布在国内,也全球也有不少用户。这些全球的移动用户是接入到全球其他的移动网络运营商。这些广泛的运营商对网络的管控也是有很多潜规则的,是我们无法预料到的。
这个就是我们的一个从用户侧到无线网络,到互联网,再到后台服务器的架构。
其实最主要的就是由于 WiFi 与移动网络,不是物理连接的,是无线连接的,这会带来一些高丢包率,高延时的问题。
最上面是我们的后台服务层。然后,随着用户规模的增长,从百万级到千万级,然后到亿级,可用性要求更高了,逐步从一个中心演变成双中心,进而达到三中心。
在早期 2G 网络时代,用户手机经过运营商网关访问网络,是会经过严格的防火墙策略限制的。 这导致了业务侧的业务部署,服务端口等都要向运营商申请加可信策略,才能被移动用户访问到。
在 2G 时代,那时候规模还比较小,主要在深圳地区,移动也没有移动机房,一开始就都部署在电信的机房里面。 晚高峰时候移动用户跨网登录到电信服务器,登录过程常常需要等待数秒。
2011 年起,国内运营商的 3G 网络逐步发展起来,WAP 网关和 NET 网关也逐步融合了,运营商 socket 限制逐步取消。业务侧也逐步增加了移动、联通机房部署,实现用户非跨网接入。
2013 年手 Q 已经超过一亿级在线了。当我们到一亿用户的时候,那时候我们要考虑,业务不太适合只放深圳地区了。
于是,在同时在线过亿后,单地域支撑存在风险, 我们业务进行了架构优化, 逐步从深圳分布,演进成深圳、天津两地分布,并进一步演进成深圳、天津、上海三中心分布。
我们是 2015 年 6 月份完成了开普勒项目,到 2015 年 8 月份,天津港就发生了爆炸事件,基于三中心分布架构的能力,我们大概花了一个小时,在用户几乎无感知的情况下面,平滑的把用户调度到另外两个中心。
• 覆盖广,数据可信度高 –— 亿级在线联网数据
• 强大的实时干预能力 —- 5 分钟级自动调度
• 极致加速 —- 调度粒度细分到 VIP 下的某端口
• 自适应中国运营商的复杂环境 —- 多发故障,多出口,跨网限制
国内的三大运营商,还有中小运营商网络环境也非常复杂,出口的限制也比较多,基于这套系统,我们能够做到自适应。
通过统计亿级在线的手机 QQ/PCQQ 的联网反馈数据,经过大数据分析处理,形成一个调度库。
这是每一天网络波动图。从这图来看,5 个省份有丢包的问题, 但是在我们实时的干预调度下,用户访问到跨地域的集群了, 丢包率降回到 3%左右 效果很好。
从我们的智能调度的抽样的案例来看,被智能调度干预的用户平均的登录耗时只有 1.9 秒,如果没有自动干预,用户需要 8.6 秒。
QQ 海外用户数相对来说比例比较小,大概 1%到 2%左右。 一开始我们只是用香港去覆盖的,可能对香港周边国家的覆盖是没什么问题,但是距离比较遥远的国家,还是会带来高时延,高丢包率的问题。
我们的解决方法是,比如说在用户就近的地区布一些网络加速点,在这些加速点连到香港服务器,然后香港服务器走腾讯跨境专线回到深圳的集群。通过这种方式来解决。
从统计数据看,在 3G 网络下,这个优化是可以把用户感知这个体验从 600 多毫秒降到 400 多毫秒,平均耗时减少了 32%左右。
我们是做了一种 IP 直通车的方案,既能够解决劫持问题,又能够解决访问速度最快的问题。目前已有 30 多个业务已经接入了手机 QQ IP 直通车服务了。
手机端还可以做的优化就是考虑把部分客户端的逻辑做到服务器逻辑里面去。
移动端网络高延时,考虑在 Server 侧做逻辑聚合。增加内网代理模块,代替客户端完成多次请求,一次性把结果返回给客户端,原先 10+s 耗时可优化到 1-2s。
比如说像手机 QQ,我们做了一个优化,把登录联网这个逻辑做到一个注册代理的后台服务上,大大降低了客户端多次请求的耗时。这其实还有一些其他间接的好处,比如说我们在春节零点抢红包的时候, 我们是可以在注册代理做一些频率控制+队列来降低零点时刻爆发峰值对我们后台业务的冲击。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.