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