做者丨郭智文:腾讯高级工程师,手机QQ运维负责人。多年来,对移动互联网应用的接入质量度量、优化有丰富的实践经验,专一于业务架构优化、弹性伸缩、运营服务管理、帮助产品打造极致的技术基础和质量口碑。
12月16日,首期沙龙“海量运维实践大曝光”在腾讯大厦圆满举行。沙龙出品人腾讯运维技术总监、复旦大学客座讲师、DevOps专家梁定安,讲师腾讯手机QQ运维负责人郭智文,腾讯高级工程师魏旸,腾讯SNG资深运维专家周小军出席沙龙,并带来精彩的技术分享。为了便于你们学习,特将本次沙龙讲师的演讲内容进行了整理。您也能够在腾讯织云公众号下载本次演讲PPT。性能优化
手机QQ起源于2003年先后,到2008年同时在线用户数到达500万,到200九、2010年就已经达到千万级别,到2013年就突破亿级级别,短短5-6年时间,增加了200倍,2016先后达到2亿级别。服务器
问题:网络
2014年12月4日早上,收到手机QQ监控告警,重庆联通部分用户访问异常。重庆联通2G、3G用户到全部IDC的网络质量变差,表现为丢包变高。但对比组重庆联通宽带Wifi用户质量正常。架构
咱们从客户端上万日志监控里面看,在12月4号凌晨,发现重庆那个地方从3%涨到4%左右,其它的有些涨到10%。运维
业务运维同事经过腾讯网络中心联系到重庆联通网络负责人,通过多轮沟以后,确认确实是运营商在凌晨时段割接网络引发,运营商与厂商通过两次调整最后故障才得以解决。socket
经过上述例子,咱们能够发现,在用户与业务服务器之间,存在着一个漫长的路径: 从手机侧到附近基站,再到移动的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 ,咱们作了一个优化,把登陆联网这个逻辑作到一个注册代理的后台服务上,大大下降了客户端屡次请求的耗时。这其实还有一些其余间接的好处,好比说咱们在春节零点抢红包的时候, 咱们是能够在注册代理作一些频率控制+队列来下降零点时刻爆发峰值对咱们后台业务的冲击。