Netflix 如何在迁移高流量系统时避免停机?
2023年12月29日
💎 加入 E+ 成長計畫 與超過 400+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源
在系统设计的面试题中,经常会有追问“如何迁移系统”。Netflix 的团队在他们的官方技术部落格中,发表了《Migrating Critical Traffic At Scale with No Downtime — Part 1》分享他们实际迁移的经验。
对大型且复杂的系统来说,通常迁移系统意味着要处理无数个子系统与伺服器。在过程中,要是有环节出错,可能导致连环的错误,进而影响到使用者。对于 Netflix 这种讲求高可用性的产品来说,影响到使用者,哪怕只是几秒钟,也将可能造成巨大的商业损失。
Netflix 团队把迁移的过程拆分成两个阶段,第一阶段是针对功能正确性、可扩展性,以及效能问题,确保新系统有足够的强韧性;第二阶段则是在实际迁移时,确保可能的风险能有对应的处理方案,以及有相对应的指标来监控。
Netflix 团队具体采用的做法是回放流量测试 (Replay Traffic Testing),也就是复制在生产环境的流量到另一个路径,然后在复制的版本中进行更新。这样的做法可以完整模拟生产环境的状况,但同时又如同有个沙盒环境可以测试,所以不会影响到实际的生产环境。
在这篇文章中,他们分析了为什么在评估多个方案后,最终采取这种策略。特别推荐大家可以读他们的分析,因为在选择技术方案,往往要面对许多取舍,不论在面试与现实工作中,你需要能够说明为什么你选 A 方案而不是 B,这篇文章的分析脉络很值得参考。