受 COVID-19 全球健康危机的影响,人们留在家中的闲暇时间也相对变长。除了远程办公和在线教育,流媒体平台的带宽也遭到了严峻的考验。显然,网络拥塞会对在线内容提供商带来极大的挑战。为了减轻服务器端的压力,企业需要找到多种调节后端负载的方法,尤其是以 Netflix 为代表的流媒体服务提供商。
Netflix 开场动画
以 Netflix 为例,该公司在今年早些时候部署了一款名叫“Zuul”的负载过滤器,旨在通过实时的优先级排序来动态处理服务器请求,以便后端能够在困难情况下实现“自我修复”。
周一的时候,Netflix 工程师在一篇博客文章中对背后的机理展开了一番详细的解释。由此可知,在实施基于优先级的减载方案时,Netflix 还可努力确保用户的观看体验不受影响。
(图自:Netflix Blog)
去年底的时候,Netflix 曾遭遇过负载拥塞而导致的服务中断。但在引入基于优先级的减载过滤器之后,后端能够更加实时地采取应对措施。
Netflix 将该过滤器简称为“Zuul”,其能够根据用户所需流量的多少、以及借助三个存储桶对服务器请求进行分类(基于非关键 / 节流 / 重要体验而对流量的优先级进行排序)。
所谓非关键项目,包括了日志和后台请求。工程师解释称,其构成了系统吞吐量的很大一部分。即便如此,当服务器负载达到一定阈值时,通常也可以忽略这部分请求。
节流体验主要针对非必须的内容播放(包括停止 / 暂停标记、播放器中的语言选择、以及历史记录查看等),意在改善用户体验。
当后端遇到麻烦时,服务器可能会发出请求,但在大多数情况下,用户几乎都是不会注意到这些项目已丢失的(尤其在观看主要的内容时)。
至于最关键的体验,则涉及最影响用户内容播放的相关流量。如果这些请求尝试失败,视频内容可能会发生报错。
Zuul 过滤器会对这些项目中的每一项进行 1~100 的评分,若后端、甚至 Zuul 本身也出现了问题,过滤器可以果断地限制最低优先级的负载。
至于这套系统的实际表现,Netflix 坦言 2019 年底和 2020 年初发生的服务中断事件对相当大比例的订阅用户都造成了影响。
但在 Zuul 成功部署之后,系统已多次成功介入减载、直到后端保持稳定,期间并没有再发生过服务中断。