写点什么

Pinterest 在迁移到 Kubernetes 的过程中发现了罕见的搜索失败

作者:Craig Risi

  • 2025-08-15
    北京
  • 本文字数:1270 字

    阅读完需:约 4 分钟

大小:617.77K时长:03:30
Pinterest在迁移到Kubernetes的过程中发现了罕见的搜索失败

Pinterest 的工程师最近披露了他们在将搜索基础设施迁移到 Kubernetes 时遇到的一个极其罕见的“百万分之一”故障的调试过程,这一举措旨在现代化运维并提高可扩展性。这一事件突出了大规模云原生迁移的技术挑战,以及在分布式系统中需要细致的调试流程。

 

这个故障是在 Pinterest(负责数十亿用户查询的搜索系统的搜索系统)迁移到基于 Kubernetes 的部署过程中出现的。工程师发现会偶尔出现查询不匹配问题,这些不匹配问题发生的频率极低,导致难以重现。问题在多个测试环境中持续存在,促使工程师深入研究基础设施交互、查询路由和存储后端。

 

经过广泛的调查,该团队追溯到故障的根本原因是在容器化搜索组件和遗留基础设施之间过渡时引入的细微不一致。故障是由网络和存储同步中的一种罕见的时序条件触发的,这种场景在正常流量下几乎不可见,但在高流量测试中会暴露出来。

 

Pinterest 的调试方法结合了组件的增量隔离、自定义日志记录和使用捕获的生产流量重放来识别异常。工程师开发了专门的诊断工具,实时比较新旧系统之间的结果,使他们能够大规模地确定差异。

 

这一事件凸显了将关键任务搜索和推荐系统迁移到 Kubernetes 这一更广泛行业领域所应汲取的教训。即使是计划周密的迁移,也可能揭示出之前未曾见过的边缘情况,这就要求组织投资于强大的可观测性、混沌测试和混合部署策略,以确保平稳过渡。

 

Pinterest 成功解决这一问题,最终为完成其迁移铺平了道路,为其搜索基础设施提供了更灵活的扩展和标准化编排。事后分析突出了在进行云原生转型的大型分布式环境中进行系统调试的操作复杂性和价值。

 

虽然 Pinterest 的调试故事是独一无二的,但其他大型科技公司在现代化搜索基础设施时也面临着类似的挑战。例如,Netflix将其部分推荐和搜索系统迁移到 Kubernetes,但在完全部署之前严重依赖于金丝雀部署和混沌测试来发现罕见的错误。他们的重点是自动回滚机制和合成查询重放,Pinterest 也采用了这些策略,但由于他们的缺陷出现的频率极低,因此必须进一步细化。

 

多年前,LinkedIn 将其搜索平台Galene迁移到容器化环境时也遇到了类似的困难。与遇到时序不匹配问题不同,LinkedIn 的团队报告了跨集群的索引延迟和状态同步问题,他们通过开发强大的内部可观测性管道和最小化查询影响的滚动迁移来缓解这些问题。他们的经验与 Pinterest 的教训相呼应,即罕见的边缘情况通常只会在高峰流量负载下出现,要求进行详尽的预生产流量镜像。

 

Airbnb 也记录了将实时服务迁移到Kubernetes期间的类似经历。他们的方法包括采用服务网格和流量跟踪,在生产环境中并行测试新集群,在不影响用户的情况下帮助检测异常。这与 Pinterest 的流量重放使用相呼应,但也凸显了一个日益增长的行业实践,即增量切换策略,以降低迁移风险。

 

这些公司的共同点很明显:将核心搜索或推荐系统迁移到 Kubernetes 总会暴露隐藏的依赖关系、网络边缘情况和时序敏感的缺陷。一致性解决方案模式涉及分层可观测性、重放框架和逐步推出策略,这强化了在现代分布式系统中构建健壮的预部署验证的重要性。

 

原文链接:

https://www.infoq.com/news/2025/08/pinterest-search-failure-k8/

2025-08-15 10:441

评论

发布
暂无评论

putchar()

謓泽

7月月更

String 实现模糊查询

小肉球

qt 7月月更

因果学习将开启下一代AI浪潮?九章云极DataCanvas正式发布YLearn因果学习开源项目

九章云极DataCanvas

人工智能 GitHub 开源项目 因果学习 YLearn

户外LED显示屏应对炎热高温天气有妙招

Dylan

LED显示屏 led显示屏厂家

欢迎来到 GrafanaFans 兴趣小组

Grafana 爱好者

云原生 可观测性 Grafana

数据类型的转换

7月月更

机器学习|BP(Back Propagation)神经网络

AXYZdong

机器学习 7月月更

干货 | 作为前端开发者如何迈向独立开发者

南城FE

独立开发者 前端 7月月更

MFC|框架下按钮的自绘

中国好公民st

c++ 7月月更

C 语言入门(七)

逝缘~

7月月更

问题来了!拔掉网线几秒,再插回去,原本的 TCP 连接还存在吗?

冉然学Java

Java TCP

关于TCP/IP协议漏洞的安全措施

郑州埃文科技

IP地址 TCP/IP漏洞修复 TCP/IP协议漏洞

【CODETOOL】文件比较Beyond Compare使用介绍

柒号华仔

开发工具 7月月更

长安链tls基础研究

长安链

Python中除了lambda函数能实现一句话程序,还有什么方式能够实现呢?

迷彩

Lambda Function 7月月更 推导式

Ceph分布式存储性能调优(六)

Lansonli

云原生 云存储 7月月更

C# 程序调试和异常处理(try catch)

IC00

C# 7月月更

TCP拥塞控制详解 | 6. 主动队列管理

俞凡

算法 网络 TCP拥塞控制

Android/Unity大乱斗-集成遇到的问题

芝麻粒儿

android Unity 7月月更

JAVA编程规范之并发处理

源字节1号

软件开发 后端开发

java零基础入门-递归

喵手

Java 7月月更

彻底了解C++异步从理论到实践

C++后台开发

网络编程 异步 C++后台开发 C++开发 C++编程

安利一款笔记工具---Obsidian

空城机

工具 7月月更

纯css实现炫酷的视频文本蒙版效果

南极一块修炼千年的大冰块

7月月更

Linux下使用QT+OpenCV实现人脸实时检测(从摄像头获取数据进行检测)

DS小龙哥

7月月更

LeetCode-110. 平衡二叉树(java)

bug菌

Leet Code 7月月更

【MySql项目实战优化】多行数据转化为同一行多列显示

安逸的咸鱼

MySQL 实战 7月月更

面试微服务

Damon

7月月更

Qt | 控件之QCheckBox

YOLO.

qt 7月月更

Flink1.7从安装到体验

程序员欣宸

Java flink 7月月更

Pinterest在迁移到Kubernetes的过程中发现了罕见的搜索失败_后端_InfoQ精选文章