从《权力的游戏》看如何防止性能中断

《权力的游戏》相信很多人都不陌生,尤其是跟我一样的美剧爱好者。《权力的游戏》第七季首播的时候吸引了数百万狂热粉丝,而第六季的结局有超过890万人观看(据我所知这是HBO最高记录),显然如果考虑到所有不同类型的媒体形式(流媒体、直播、DVR和重播),那单集的观众总数约为2300万。

当我想到2300万观众同时试图从HBO访问同一个节目时,我的脑海中就会出现一些些的困惑。他们建立了什么样的基础设施?而且,更重要的是,他们是如何对这个方案进行性能测试的?如果我们都是30分钟的剧集,突然出现了中断怎么办?

我个人在HBO Go应用上观看《权力的游戏》,流媒体传输到我的电视上,于是我想做一些研究,看看在这个特殊的用例中是什么。

以下是我发现的关于HBO Go应用的情况

  • 它主要是基于Java
  • 使用Cassandra作为其主要数据源
  • 通过REST APIs家庭设备通信
  • 在亚马逊EC2上发布流媒体内容,与MLB Advanced合作

根据互联网知识的膨胀...... HBO最初在内部计划了代号为Project Maui的流媒体服务。这大约是在2014年,但他们遇到了一些挑战,包括在《权力的游戏》和《真探》剧集期间发生的一些中断。(据称当时一些开发人员知道可能的内存泄漏,但将其归结为非问题,然而不幸的是,这些泄漏最终导致了中断。)

为了说明这类问题的重要性,HBOCTOProject Maui问题之后就辞职了,其中很大程度上与这些导致中断的内存泄漏有关。他们自己定制的平台的失败导致平台团队的方向发生了全盘改变,不得不转向第三方解决方案。人们不能低估关键任务基础设施的质量、性能和安全性的影响。

不过,在这些问题之后,HBOMLB Advanced合作,现在他们做的是流媒体。那么,要对该基础设施进行充分的性能测试,以确保他们在周日不会发生灾难性的中断,会是什么样的呢?

这里有一张图,模拟了我猜测的堆栈的样子,以及适当的测试类型将适合的位置:

我会从重新创建登录、搜索和选择工作流开始。我会测试从应用服务器到服务的REST API调用,我会验证对后端数据库的功能调用。然后,我将重复使用这些调用来创建针对各个组件的性能和负载测试,以确保它们将孤立地执行,不会受到过饱和的影响。然后,我将从移动应用和浏览器体验中记录用户的体验,并将其重新用于性能测试。将这两个结果汇总在一起,同时监控底层技术的线程、内存泄漏、CPU利用率等,这将变得非常重要。这将帮助他们了解应用堆栈的潜在热点所在。

结语

性能测试有时会被忽视,但只要有正确的解决方案,这也会很容易。然而,如果忽视这一点,当他们的数据流突然停止时,你可能会被一群“狂怒的野蛮人”追杀。

如果你想复制我在那张图中的做法,利用基于环境的方法进行测试,你可以使用Parasoft SOAtest进行功能测试自动化,使用Parasoft Virtualize进行服务虚拟化。这些技术无缝连接,使你的测试易于管理。

原文地址:https://www.cnblogs.com/dhorde/p/14372269.html