我们向3200万人直播体育赛事时学到的工程经验

我们向3200万人直播体育赛事时学到的工程经验

💡 原文英文,约1700词,阅读约需6分钟。
📝

内容提要

JioHotstar工程师分享为2023年IPL板球决赛备战的经验:按预期流量两倍(5000万至7500万并发)设计容量,确保视频播放这条“黄金路径”绝不失败。重点包括提前扩容短信验证等认证系统,对合作伙伴严格压测并按延迟切换流量,用200项清单排查超时等故障点,进行全链路仿真测试,并设定严格延迟预算(内部服务10-15毫秒,关键API失败快速熔断)。建议统一优先级原则、挑战系统性能、识别并加固关键路径。

🔎

延伸解读

峰值不在决赛日:认证系统才是隐藏瓶颈

文章指出,短信验证等认证系统的真实峰值往往出现在赛事首日,而非决赛。大量新用户或长期未登录用户会在开场前五到十分钟集中登录,形成远超预期的并发压力。这意味着容量规划不能只盯着直播流本身,必须提前识别并扩容所有前置依赖,尤其是那些容易被忽视的认证环节。

黄金路径原则:视频流不可失败,其余皆可牺牲

团队将视频播放链路定义为“黄金路径”,明确其绝不能失败,而其他系统在极端情况下可以降级。这一原则驱动了后续所有决策:从识别关键路径、压测合作伙伴,到设计短信服务全挂时的免认证观看方案。对读者而言,关键启示是提前统一优先级,避免事件期间因原则冲突陷入决策瓶颈。

全链路仿真比单服务压测更能暴露真实问题

文章强调,服务在隔离环境下扩展良好,加入依赖后可能原形毕露。全链路仿真能发现内容系统被多处调用等扇入问题,这类问题在垂直压测中不会显现。团队还通过200项清单排查超时配置等故障点,并将每次事故转化为下一季的检查项,形成持续加固关键路径的机制。

严格延迟预算与快速熔断:宁可失败快,不可等待正确

团队为内部服务设定10-15毫秒的延迟预算,复杂场景允许40-50毫秒,超过50毫秒则考虑异步化。对于点击视频到播放之间的关键API,即使涉及第三方调用,也严格限制在5-10毫秒内熔断。这种“快速失败并恢复”的策略,避免了用户重试或重开应用对系统造成二次冲击。

❓

Q&A

JioHotstar为2023年IPL决赛准备的容量目标是多少?

他们按预期流量的两倍设计容量,即准备应对5000万到7500万并发观众,而实际决赛峰值达到了3200万并发。

为什么视频播放路径被称为“黄金路径”?

因为视频播放是平台的核心承诺,这条路径上的任何组件都不能失败,否则整个平台的价值就不复存在,所以必须确保其万无一失。

认证系统在直播事件中面临什么特殊挑战?

峰值并发往往出现在比赛第一天而非决赛,大量新用户或长期未登录用户在开场几分钟内集中登录,导致短信验证等认证系统承受巨大压力,需要提前扩容。

他们如何对合作伙伴进行管理以确保低延迟?

对合作伙伴进行严格压测,不满足延迟SLA的会在活动期间被切断;当某个合作伙伴延迟下降时,流量会立即按层级切换到下一个合作伙伴。

200项检查清单主要排查哪些问题?

清单覆盖数据库版本和维护窗口、合作伙伴的关键依赖、冗余配置、超时设置(从负载均衡器到服务、应用服务器、数据库直至CDN),以及类似keep-alive超时未配置导致连接丢弃等历史故障点。

他们的延迟预算具体是如何设定的?

纯内部服务(无第三方调用)的简单O(1)查询需在10-15毫秒内完成;复杂情况(多次数据库调用或第三方调用)允许40-50毫秒;关键路径上超过50毫秒则考虑异步处理。用户端到端延迟约为60-100毫秒。

对于视频点击播放的API,他们采取了什么特殊措施?

该API响应难以缓存,需实时进行CDN负载均衡和认证检查。即使必须调用第三方,也严格限制在5-10毫秒的熔断预算内,以便快速失败并恢复,而不是等待正确。

作者给准备高不确定性事件的工程师提出了哪三条建议?

1. 设定正确原则,与领导和团队对齐优先级;2. 挑战系统性能,不满足于100毫秒的响应时间;3. 识别关键路径并确保其稳固,非P1/P2依赖不应出现在同步关键路径中。

🏷️

标签

➡️

继续阅读