阿里云CDN服务客户超过30万,拥有遍布6大洲、70多个国家地区的1500多个节点,带宽能力超过120T,是国内唯一获得Gartner评级Global的厂商。随着业务和节点带宽的增长,服务质量优化是一个值得探讨课题。在杭州云栖大会-飞天技术汇CDN与边缘计算专场中,阿里云高级技术专家刘廷伟与现场观众一同交流了CDN服务质量优化的技术实践。
阿里云全球CDN发展历程
阿里云CDN是在2006年起源于淘宝自建CDN,从为淘宝提供图片、网页等小文件的加速服务,并逐步开始服务整个阿里集团内部业务。2014年3月,阿里云CDN正式对外商业化,从商业化之初,就非常关注产品标准化,提供了完善的控制台和API,用户可以与使用其他云资源一样,即买即用。
在此之后的几年内,阿里云CDN陆续发布了极速CDN6.0、PCDN、SCDN、DCDN等产品,在今年三月,被Gartner发布最新全球CDN服务市场指南《Market Guide for CDN Services》评级为Global,并在今年夏天,承担了70%的世界杯直播流量。
而伴随着业务和节点带宽的增长,服务质量的问题也会随之凸显。刘廷伟说:“当我们讨论服务质量优化的时候,需要从整个生态系统的角度来考虑,结合技术和行业背景,寻找所有可能优化的方向。当时就感觉像这种图,目标就在前方,但是怎么也走不出去。于是我们团队静下心来,决定彻底解决服务质量的问题。”
下图是一个简化的CDN逻辑架构图,从图中可以看出CDN是一套完备的生态系统。从用户访问的路径来看,这套生态系统的每个环节都有哪些子系统。首先是运营商的LDNS,然后是CDN的调度系统,通过这两个环节给用户分配一个最近的节点,这属于调度子系统。当用户访问到达边缘节点,从边缘节点上获取对应的直播、点播、下载、动态、实时音视频等内容,这是缓存系统在工作,再之后就是缓存节点之间、节点到用户、节点到源站之间的数据传输,这属于链路质量系统的工作。最后一个部分是配置、数据、监控相关的支撑系统。
刘廷伟老师重点围绕调度、链路质量和天眼监控展开分享,在短短半个小时之内将整个CDN生态系统中的服务质量优化实践做了非常生动精彩地讲解,现场观众纷纷表示受益颇多。
一.调度子系统优化
调度要解决的问题,就是将用户调度到离用户最近的健康节点。这其中,最关键的就是节点覆盖的能力,其次才是调度,另外一个就是流控。
节点覆盖
刘廷伟老师讲到:节点的覆盖并不是单纯的建设,选点和度量是非常关键的,它可以让节点更好的覆盖用户。阿里云从17年开始大规模进行海外节点的建设,300+海外节点,满足国内用户出海加速和海外用户加速的需求。
调度 - LDNS
公共LDNS或者用户LDNS配置错误等问题,会导致用户无法正确调度到最近的节点,导致服务质量下降。针对这个问题,对于APP端的应用,阿里云提供HTTPDNS的方式解决;对于网页等无法实现HTTPDNS的,通过302调度/纠偏解决。当用户请求到边缘节点后,如果由于LDNS问题没有调度到最近的节点,这时候节点会对大文件进行302纠偏,将用户调度到最近的节点。
“另外一个就是LDNS的画像,我们看到不同的LDNS在轮询、forward和TTL的处理上都是不同的,包括LDNS的前后端IP的比例也是不同的。我们不可能要求LDNS都按照我们的要求来吐出策略,但是我们可以按照LDNS的特点,调整我们的吐出策略。有人说既然302可以纠偏,那干嘛还有跟LDNS过不去啊,就让他随便调度吧,是不是?“刘廷伟认为:”答案一定是否定的,一次302调度对时间是一个RTT 20ms左右,不要小看这20ms,我们针对图片小文件服务质量优化的时候,都是按照1-2ms挖掘优化的。一个1K的图片,整个处理响应时间就是10-15ms左右,增加一个20ms,意味着性能下降一半,因为这个性能下降,我们客户的用户转化率下降10%,这是无法忍受的。”
流控
流控的自动化和智能化是云CDN和普通CDN的最大区别之一,1000多个节点,数十万机器,100T+的流量,怎么将流量均衡的调度到用户最优的节点,靠人是完不成的。何况整个阿里云CDN调度的运维同学只有2个人,这意味着阿里云CDN必须要高度的自动化和智能化,才能完成精准的流量调度。这块优化方案有两个,一个是离线规划,根据历史流量的趋势进行预测调度;一个是实时调度,针对突发业务特点进行流量规划。
那么怎么做离线和实时呢?我们把每个节点比喻成一个瓶子,调度流量是砂石。那么DNS流量特点就非常像大石头,而HTTPDNS和302流量就像是沙子,调度的力度可以到具体的问题。离线规划重点是大块的DNS流量,实时流控就是HTTPDNS和302流量,两者结合,保证每个节点水位均衡,每个用户也都调度到最优的节点。阿里云流控系统不仅很好的支持常态的CDN业务,也经受住了双11、春晚和世界杯活动类突发流量的考验。
二. 链路子系统优化
接下来刘廷伟老师带着现场观众走进了链路质量优化。链路子系统要解决的问题,就是在现有的网络链路上,如何高效的传输数据。
固定单向链路下的优化方案 - 协议栈优化
协议栈优化的目标是什么? 场景不同,优化的方向不同,要考虑成本、性能、公平性的均衡。在面向用户这段的链路,为了保证用户的服务质量,阿里云牺牲了部分成本,通过调整拥塞算法,丢包探测算法,将协议栈的性能提升了30%。
路由决策
刘廷伟老师生动的比喻:“如果说CDN的节点网络是高速公路,那么路由决策就是高德地图。为用户的每一个动态请求,决策从最近接入点到用户源站的最优路径。”
当打开高德地图,进行阿里中心到北京南站的高德路线规划的时候,我们可以发现:
第一,每个链路上每段路的拥堵程度也都标注了,这就相当于网络质量实时探测。
第二,高德为我们规划了3条路。这就相当于选路,CDN也会给出源站内容到用户之间最短的3条路径做选择。
第三,高德地图给出来高速优先、躲避拥堵等选项,还有我们特色的限号区域。这就相当于链路亲和性,比如源站在铁通,CDN就可以接铁通。
四、天眼系统
天眼系统的目标就是第一时间发现和诊断质量问题,并将处理经验自动化。主要包括两块,第一时间发现问题 - 监控,和发现后的处理经验自动化 - 告警处理。
监控
监控的核心就是数据源。谈到数据源,大家首先想到的就是业务日志,这些业务带宽、QPS、命中率等数据,这个是这个域名的请求处理时间数据。这些数据可以进行基本的业务监控。
如果这时候某个地区运营商服务质量下降,业务正常,只是下载速度慢了。通过这种数据就没法进行判断了。需要网络层面的度量数据。
网络数据包括丢包率、RTT、建连时间、平均请求大小等数据都是在内核层面进行采集。这些可以对下载类的业务进行基础的判断。如果直播的客户卡顿,监控如何发现是哪里的原因呢?这就需要全链路监控,阿里云实现了直播全链路全域的数据监控体系。
告警处理
有了数据之后,大家都知道根据数据添加告警就可以了,是不是这样告警就结束了呢?
随着业务发展,针对各种各样的数据源来配置告警,导致告警越来越多,告警泛滥,根本无法有效处理,所以第一个要解决的问题就是告警的准确性和收敛。
如何进行告警收敛?
1、根据业务特点和告警时的异常事件进行关联和合并,降低重复报警
2、告警处理工单化,同时对工单进行跟踪处理和统计
3、告警分级,这个非常关键。不同级别的工单不同的通知方式、通知访问和响应时间要求。比如高优先级的告警,必须保证及时性、准确性响应时间;对于底优先级的告警,更多关注告警后续的跟踪和处理率。
虽然进行了告警收敛,但是还是会发现依靠人来处理还是有滞后,需要具备自动化的能力。自动化能力其实就是人工处理经验的机械化,将问题出现后排查的方式、数据和手段机械化,将问题修复的操作程序化。
比如针对直播业务,对于卡顿非常敏感,对于处理时间的响应要求也非常高。于是就将卡顿排除的手段和处理程序化,当有问题出现的时候,直接告警通知问题发生了、问题发生的原因是什么、这个问题的原因应该执行的修复策略是什么。
一个是自动化处理陷阱,不要天真的以为所有的事情都可以自动化,很多时候简单的自动化会给系统埋下巨大的坑。比如节点故障的隔离,如果1500个节点,有1000个节点监测出问题了,怎么办?自动化处理下线修复?那剩下的500个节点就被流量打爆了。一定要给自动化安个熔断器,做到可控的自动化。
一个是自动化穷举的问题,你不可能所有的自动化都是人工经验的简单重复,需要让自动化去自学习,通过机器学习的能力,利用告警异常数据,自己成长出未知问题的处理能力。
五、客户案例
除了分享纯粹的技术干货,刘廷伟老师现场也介绍了几个具体的客户案例,让观众更有体感。
第一个案例是亚洲航空,阿里云为亚航提供全球全站加速解决方案,针对动态数据进行路由优化及隧道服务,响应速度提升150%。
第二个案例是印尼本土电商Tokopedia, 印尼最大的C2C的网络销售平台, 阿里云为Tokopedia提供全链路HTTPS安全加速解决方案,在保障安全支付的同时,提升100%以上的加速效果,同时发挥云CDN弹性扩容的优势,在多次促销活动轻松应对数十倍的活动突发。
第三案例是今日头条,国内移动互联网领域成长最快的产品,旗下有今日头条、抖音、火山等深受用户喜爱的产品,头条技术团队的能力也是国内领先的,阿里云CDN跟头条团队一起,建立了端到端的短视频质量监控体系,整个优化数据做到卡顿率、中断率和失败率总体低于1%。
最后一个客户案例是虎牙,作为国内领先的互动式直播平台,阿里云CDN和虎牙一起实现了端到端的直播全链路监控,可以实时监控和定位直播卡顿问题和原因,保证虎牙直播业务的流畅体验。
在分享的最后,刘廷伟老师说到:“虽然我们在服务质量上做了很大的工作,但是还有很长的路要走,我们欢迎各位专家加入我们,一起做全球最好的CDN!”