9 月 13 日,2025 Inclusion・外滩大会「开源嘉年华」正在限量报名中! 了解详情
写点什么

Airbnb Istio 升级 14 次零宕机!Google、Uber、Netflix 都在借鉴

作者:Craig Risi

  • 2025-09-05
    北京
  • 本文字数:1420 字

    阅读完需:约 5 分钟

大小:691.71K时长:03:56
Airbnb Istio 升级 14 次零宕机!Google、Uber、Netflix 都在借鉴

Airbnb engineering 发布了一份详细报告,介绍公司如何在数万 Pod 和数千 VM 上执行 Istio 升级的同时保持高可用,而且没有发生宕机。该公司的服务网格基础设施支持 Kubernetes 和 VM 环境中的工作负载,在峰值时每秒处理数千万次请求。尽管过程复杂,Airbnb 至今已完成了 14 次 Istio 升级。


关键挑战在于协调不同团队所负责的多样化工作负载。为了解决这个问题,Airbnb 设计了一条升级流水线,它能够“保证”零宕机,支持渐进式发布、回退机制,并确保所有工作负载能在固定时间范围内完成更新。


在技术实现上,这一过程通过 Istio 控制平面的双版本部署来完成,并结合金丝雀发布策略,每个版本通过 revision 标签区分(例如 1-24-5、1-25-2)。工作负载通过 mutating webhook 绑定到指定 revision,从而注入相应的 istio-proxy sidecar。升级过程会根据 rollouts.yml 文件中定义的分发规则,有选择地将部分工作负载切换到新版本。


为了避免不同团队手动更新标签,Airbnb 使用了内部的 Krispr 变更框架。在 CI 流程中,Krispr 会根据发布配置将正确的 revision 标签注入到工作负载规范中。它还会在准入时持续迁移旧 Pod,确保在四周内所有工作负载(包括不活跃的)都能顺利完成迁移。


对于 VM 工作负载,Airbnb 借助 mxagent 守护进程,它会轮询各主机的版本标签,并在必要时一次性完成 istio-proxy 及其配置的升级。一个中央控制器(mxrc)负责协调 VM 的升级发布,它会遵循健康检查与升级安全阈值,类似 Kubernetes 的 maxUnavailable 机制。


在 Airbnb 成功完成最近的服务网格升级之外,业内其他公司也采用了各自不同的升级方式:

Netflix 推出了自己的零配置服务网格。它没有依赖重量级的控制平面模型,而是设计了一个能自动管理服务发现、重试和流量路由的网格,不需要手动配置。这样,Netflix 避开了多版本 Istio 升级中的协调挑战,同时仍然获得了服务网格在流量管理和可靠性方面的好处。


作为全球最大的 Kubernetes 部署之一,LinkedIn 在升级核心基础设施(包括 Kafka 和网络层)时,通常会结合使用金丝雀发布和流量镜像。在服务间通信栈方面,LinkedIn 曾经尝试过基于 Envoy 的解决方案,但更多依赖于带有镜像流量的渐进式发布流水线来确保安全性。这种做法在理念上与 Airbnb 的双 Istio 版本策略相似:两者都能在正式切换前,用新版本先行验证流量。


作为 Istio 的创建者之一,Google Cloud 自身为客户率先提供了多版本控制平面,类似 Airbnb 的实现。GKE 现在支持运维人员同时运行多个 Istio 版本,从而让发布与回退更为简便。Google 还在推动 Ambient Mode,这种模式用轻量级数据平面代理替代 sidecar,大幅减少升级影响范围。Airbnb 已经表示对 Ambient Mode 感兴趣,表明其方向与 Google 的下一代网格演进保持一致。


Uber 运行着一个基于 Envoy 的内部网格框架,并与其定制的服务发现系统深度集成。他们的升级策略通常是按集群逐步部署,而不是通过精细的版本绑定。Uber 还投入大量资源开发工具,用于在升级期间实现自动回滚并执行 SLA 监控,在一定程度上,可以看作是 Airbnb 用于 VM 的 mxagent + mxrc 机制的类似做法。


这些对比反映了一个更广泛的行业趋势:企业不断投入更先进的发布框架或服务网格创新,以平衡复杂性、可靠性与运维可控性。


展望未来,Airbnb 打算尝试 Istio 的 Ambient Mode,以实现更轻量的网格架构,同时通过拆分网格来减少风险范围并提高隔离性。


原文链接:

https://www.infoq.com/news/2025/08/airbnb-istio-upgrade/

2025-09-05 10:102

评论

发布
暂无评论

Linux 基础操作

yuanhang

linux命令

Securecrt 使用

yuanhang

securecrt

【DevCloud · 敏捷智库】暴走在发布前夜的开发,你怕不怕?

华为云开发者联盟

版本控制 系统集成 发布

云栖大会倒计时8天,新一代CDN的技术突破和应用实践专场有什么看点?

阿里云Edge Plus

CDN CDN加速

第十三周作业

Linuxer

大数据2学习总结

周冬辉

JavaScript 简介

InfoQ_34a83d636158

架构师课程第十三周总结

dongge

架构师13周练习

小蚂蚁

JavaScript中的原型到底该如何理解?

Walker

Java 大前端 面向对象编程 原型

搜索引擎如何推荐网页

dongge

打破Scrum的五个误区(译)

Bruce Talk

Scrum 敏捷开发 Agile

35岁以上的程序员们,后来都干什么去了?

华为云开发者联盟

程序员 职业规划 架构师

物联网为什么需要5G?

华为云开发者联盟

5G 物联网

捡到宝啦!阿里内部人手一本的Springboot进阶手册,先学为敬

Java架构师迁哥

区块链赋能数字经济,为知识和版权确权定价

CECBC

区块链 知识产权 数字经济

为什么说区块链是制造信任的机器?

CECBC

区块链 不可篡改

架构师训练营第十三周作业

叮叮董董

大数据解答(二)

dony.zhang

数据分析

到底什么是分布式系统?你需要了解这些

华为云开发者联盟

分布式 部署

淘宝服务端高并发分布式架构演进之路

简爱W

Java java架构师

微信群总是有人发广告?看我用Python写一个自动化机器人消灭他!

刘早起😶

Python

架构师训练营-第十二周作业

腾志文(清样)

CommonMistakes

卓丁

架构师0期Week13总结

Nan Jiang

够开放吗?来,和一群开发者搞事情!

易观大数据

从零开始搭建完整的电影全栈系统(二)——简单的WEB展示网站的搭建

刘强西

Yii2 yii

java安全编码指南之:表达式规则

简爱W

Java java架构师

架构师训练营-第十一周作业

腾志文(清样)

常用数据分析指标

纯纯

北京或先行落地央行数字货币 人民币3.0时代将来临

CECBC

数字货币 银行 人民币

Airbnb Istio 升级 14 次零宕机!Google、Uber、Netflix 都在借鉴_后端_InfoQ精选文章