Mux如何在9.9毫秒内选择CDN

Mux如何在9.9毫秒内选择CDN

💡 原文英文,约1800词,阅读约需7分钟。
📝

内容提要

Mux公司历经四次尝试,最终构建了CDN路由器系统。该系统通过健康探测、数据库和路由器三部分,预计算CDN可用性,排除不合格CDN后加权随机分配流量,并支持手动路由和容量控制。选择过程快速(p99为9.9毫秒),结合冗余流支持,提升了视频服务的可靠性和韧性。

🔎

延伸解读

从“最优”到“够好”的转变

Mux的实践表明,追求单一“最优”CDN并不明智。早期方案因执着于最低延迟,导致流量分配失衡,且实时计算拖慢性能。最终方案改为先排除不合格CDN,再按权重随机分配,既保证了体验,又提升了整体韧性。这提醒我们,在分布式系统中,有时“够好”比“最优”更务实。

独立数据源与预计算的重要性

Mux曾因依赖CDN日志而陷入“雪球效应”:路由决策影响数据来源,进而影响后续决策。为此,他们引入独立健康探测,并预计算可用性,使选择过程只需快速查库,p99延迟降至9.9毫秒。这启示我们,关键决策应基于不受自身决策影响的数据,并尽量将复杂计算前置。

冗余流与手动控制:应对不确定性的双保险

即使CDN选择再快,也无法预测播放中途的故障。Mux将冗余流改为默认开启,让播放器能在必要时切换CDN,同时保留手动路由能力,支持按国家、大洲和客户ID精细调整。这种“自动+手动”结合的方式,为应对突发状况提供了灵活性和可靠性。

Q&A

Mux的CDN路由器系统由哪三个主要组件构成?

Mux的CDN路由器系统由三个主要组件构成:健康探测(Health probes)、数据库(Database)和CDN路由器(CDN router)。健康探测定期向CDN发送请求以检测其可用性;数据库使用CockroachDB存储探测结果、路由决策和CDN C的实时容量指标;CDN路由器则根据这些数据做出路由决策。

Mux的CDN选择服务如何避免“滚雪球效应”?

Mux通过使用独立的健康探测数据源来避免“滚雪球效应”。健康探测是独立于CDN选择决策的,即使流量被路由到其他CDN,探测仍然会继续收集所有CDN的数据,从而确保数据的客观性和全面性。

Mux的CDN路由器在选择CDN时,为什么采用加权随机分配而不是选择性能最好的CDN?

Mux采用加权随机分配是因为追求单一“最佳”CDN会导致流量过度集中,降低韧性,且性能差异(如78ms vs 80ms)用户无法感知。通过排除不合格的CDN后加权随机分配,可以更均匀地分布流量,提升整体可靠性和用户体验。

Mux的CDN路由器如何实现快速选择(p99为9.9毫秒)?

Mux通过预计算CDN可用性决策并存储在数据库中,选择时只需进行快速的数据库/缓存查找,避免了实时计算。此外,健康探测结果定期更新,决策过程简单高效,从而实现了极低的选择延迟。

Mux的CDN路由器如何处理CDN C的容量限制?

CDN C是Mux与合作伙伴共建的较小CDN,容量有限。路由器会每20秒收集CDN C的容量指标,并在决策时检查当前容量,如果接近容量上限,则自动将流量路由到其他CDN,避免过载。

Mux的CDN路由器支持哪些手动路由维度?

Mux的CDN路由器支持按国家、大洲和客户ID进行手动路由,并且设计上支持未来添加更多维度。

Mux为什么将冗余流从选择加入改为选择退出?

Mux将冗余流从选择加入改为选择退出,是为了让更多用户自动受益于冗余流功能。这样,即使视频播放中途CDN出现问题,播放器也能切换到备用CDN,提升观看体验的可靠性。

Mux的CDN路由器未来计划增加哪些功能?

Mux计划增加更多数据源(如CDN日志和Mux Data的实时信息),以及内容引导(content steering)功能,让播放器能够自主切换CDN,进一步增强系统的韧性。

🏷️

标签

➡️

继续阅读