写点什么

Impulse:Airbnb 全新的情境感知负载测试框架

作者:Leela Kumili

  • 2025-09-12
    北京
  • 本文字数:1138 字

    阅读完需:约 4 分钟

大小:563.04K时长:03:12
Impulse:Airbnb全新的情境感知负载测试框架

Airbnb 开发了Impulse,这是一个内部使用的负载测试框架,旨在提高其微服务的可靠性和性能。该工具支持大规模分布式测试,使得工程团队可以自助运行情境感知型负载测试,并与持续集成(CI)管道深度集成。通过模拟类似生产环境的流量和交互,Impulse 能够帮助工程师在变更到达生产环境之前识别瓶颈和错误。

 

根据 Airbnb 工程团队的说法,Impulse 系统已在多个客户支持后端服务中投入使用,并且正在接受评估,以确定是否要扩大应用范围。该系统旨在协助服务所有者建立性能基线、主动解决问题,并增强 Airbnb 全球基础设施的弹性。

 

Airbnb 内部的几个团队报告说:

 

Impulse 帮助我们识别并解决服务中潜在的问题。在测试期间,它检测到了线程池耗尽、客户端 API 调用偶尔超时以及服务容器内存使用率高等问题,使我们能够优化性能和资源使用。我们强烈推荐将 Impulse 作为开发和测试流程的一个组成部分。

 

Impulse 集成了一些广泛使用的工具,包括:用于容器化的 Docker、用于测试执行的JavaKotlin和用于自动化的 CI/CD 管道。Airbnb 指出,这种组合能够实现贴近生产环境的真实测试,在代码变更部署前提供可靠保障。


Impulse 与其他测试框架的集成(来源:Airbnb技术博客

 

Impulse 包含四个独立的组件:负载生成器、依赖模拟器、流量收集器和测试 API 生成器。团队可以根据服务的复杂性和需求,按需采用各个组件。


Impulse 框架及其四个核心组件(来源:Airbnb技术博客

 

负载生成器允许团队使用 Java 或 Kotlin 编写测试逻辑,并针对被测试的服务运行容器化测试。使用编程语言而不是领域特定语言,为复杂场景提供了灵活性,支持代码重用,并且可以利用 IDE 提供的调试、测试等功能。每次运行测试都会新启动一组容器,提高了隔离性和成本效率。负载测试工件分布于各数据中心,生成器与 CI/CD 管道集成,通过可配置的预热阶段、稳态阶段和峰值阶段实现测试自动化。

 

依赖模拟器通过引入受控延迟和预定义响应来模拟下游服务。当服务依赖外部供应商或需要在回归或集成测试期间实现隔离时,这一功能非常有用。通过模拟依赖项,团队可以在不影响其他服务的情况下,评估各种负载条件下的系统行为。

 

流量收集器从实时环境中捕获上游和下游交互(包括延迟分析),并在测试环境中重放这些数据。这可以确保负载测试反映了现实世界的模式,并且可以发现合成流量可能无法揭示的瓶颈。

 

测试 API 生成器将事件驱动的异步工作流转换为同步 API 调用,从而能够对在负载条件下难以评估的流程进行全面的负载测试。这种方法有助于发现传统同步测试可能忽略的性能问题。该框架集成了多种工具:采用 Docker 实现容器化,使用 Java 和 Kotlin 执行测试,并通过 CI/CD 管道实现自动化。

 

声明:本文为 InfoQ 翻译,未经许可禁止转载。

 

原文链接:

https://www.infoq.com/news/2025/09/airbnb-impulse-load-testing/

2025-09-12 12:001

评论

发布
暂无评论

模块二作业

SAKIN

Spark SQL和DataFrames:与外部数据源进行交互(五)

Databri_AI

sql spark

白嫖一份小白到进阶网络安全学习宝典【建议收藏】

网络安全学海

面试 网络安全 信息安全 渗透测试 开发安全

模块二作业

Mr.He

架构实战营

架构实战营 - 模块二作业

思梦乐

心理韧性:如何让自己从逆境中走出来

石云升

学习 心理学 7月日更

架构实战营 - 模块二作业

李东旭

「架构实战营」

大数据与分布式

喵叔

7月日更

Linux之/etc/group文件

入门小站

Linux

微信朋友圈的高性能复杂度分析

架构0期-Bingo

在线XML转JSON工具

入门小站

和12岁小同志搞创客开发:检测按键状态的两件法宝

不脱发的程序猿

DIY 中断 创客开发 按键检测

八位阿里大牛耗时三年总结出Java面试复盘手册!带你实现逆风翻盘

Data Mesh,数据网格的道与术

王知无

云计算的革命尚未开始

大可不加冰

云计算 Cloud 基础设施即代码 Cloud Native

一文入门 Go 的性能分析

Rayjun

pprof Go 语言

第五周作业 - 知识星球加入星球的流程图

小夏

产品经理训练营 邱岳

设计一个秒杀系统

卢卡多多

秒杀 7月日更

模块二作业

Geek_35a345

如何写出富含知识的代码

escray

学习 极客时间 7月日更 如何落地业务建模

Vue进阶(幺伍零):Vue key应用

No Silver Bullet

Vue 7月日更 key

【面试&个人成长】2021年过半,社招和校招的经验之谈

王知无

【LeetCode】连续子数组的最大和Java题解

Albert

算法 LeetCode 7月日更

丢失api-ms-win-crt-runtimel1-1-0

好孩子

微信朋友圈的高性能复杂度

张文龙

#架构实战营

科学主义 -- 个人进步的杀手

俞凡

认知

分享几个团队敏捷转型过程中的故事

Bruce Talk

Scrum 敏捷 Agile

网络攻防学习笔记 Day77

穿过生命散发芬芳

网络攻防 7月日更

17道题你能秒我?我Hbase八股文反手就甩你一脸

王知无

Vue进阶(幺肆捌):Vuex辅助函数详解

No Silver Bullet

Vue vuex 7月日更

架构实战营模块二作业

袁小芬

架构实战营

Impulse:Airbnb全新的情境感知负载测试框架_框架_InfoQ精选文章