1. 课程导论与 k6 概述

1.1 k6 是什么

k6 是一款由 Grafana Labs 维护的开源、现代化、面向开发者的负载测试工具。它专为容量压测、性能验证和可靠性工程场景设计,能够以极低的资源消耗模拟海量虚拟用户(VU)并发访问,帮助团队在发布前发现系统的性能瓶颈与容量极限。

与传统的 JMeter、Locust 等工具相比,k6 将脚本编写、CI/CD 集成和结果分析统一为开发者友好的工作流,是 DevOps 和 SRE 团队进行巡检编排与事件触发压测的首选引擎。

课程定位:本课程聚焦于“事件触发”与“巡检编排”两个高级场景,而非基础功能罗列。你将学会如何用 k6 构建自动化、可重复、可观测的容量压测体系。

1.2 k6 的核心特性

k6 的架构设计围绕高性能和可编程性展开,其核心特性可归纳为以下三个维度:

特性维度 具体描述 工程价值
事件驱动引擎 基于 Go 语言的事件循环(Event Loop)模型,单进程可调度数万并发 VU,无线程切换开销 极低资源消耗,适合在 CI 容器中运行大规模压测
Go + JavaScript 混合架构 核心运行时用 Go 编写,负责网络 I/O 与调度;脚本层使用 JavaScript ES6 语法,通过 goja 解释器执行 兼具 Go 的高并发性能与 JS 的脚本灵活性
指标与可观测性 内置 HTTP、gRPC、WebSocket 等协议支持,自动收集请求延迟、吞吐量、错误率等核心指标 开箱即用的容量评估与阈值告警能力

1.3 事件驱动:Go 与 JavaScript 混合架构详解

理解 k6 的混合架构是掌握其事件触发能力的前提。下图展示了 k6 运行时的核心组件与数据流:

k6 运行时架构:Go 引擎 + JavaScript 脚本层 JavaScript 脚本层 export default function () { http.get('https://api.example.com'); } Go 运行时引擎 事件循环调度器 网络 I/O 多路复用 指标聚合器 goja 解释器 事件触发层(Event Triggers) setup() / teardown() / 自定义事件 / 阈值回调 指标输出:JSON / CSV / Prometheus / InfluxDB
架构要点:
  • Go 引擎负责所有网络 I/O 操作(HTTP、gRPC、WebSocket),使用 goroutine 和 epoll/kqueue 实现高并发非阻塞调度。
  • JavaScript 脚本通过 goja 解释器在 Go 进程中运行,脚本中的异步操作(如 http.get)会被引擎自动转换为事件回调。
  • 事件触发层是课程核心:setup() 初始化数据、teardown() 清理资源、阈值回调(thresholds)在指标越界时自动触发告警或停止测试。

1.4 k6 在容量压测中的定位

在完整的容量压测工具链中,k6 填补了开发者驱动与自动化巡检之间的空白。下表对比了 k6 与其他主流工具的定位差异:

对比维度 k6 JMeter Locust Gatling
脚本语言 JavaScript (ES6) XML / Java Python Scala / Java
并发模型 事件驱动(Go) 线程池(Java) 协程(Python) Akka Actor(Scala)
CI/CD 集成 原生支持(CLI + Docker) 需插件或 CLI 需自定义封装 Maven / sbt 插件
事件触发能力 内置 setup/teardown、阈值回调、自定义事件 需 BeanShell 或 JSR223 需事件钩子 需 Scala 编码
资源消耗(10k VU) ~200 MB 内存 ~2 GB 内存 ~1 GB 内存 ~1.5 GB 内存
选型建议:如果你的团队已经采用 JavaScript/Node.js 技术栈,并且需要将压测脚本纳入 GitOps 和 CI/CD 流水线,k6 是最自然的选择。对于需要复杂关联和参数化的传统企业级压测,JMeter 仍有其生态优势,但 k6 在巡检编排和事件触发场景下更具灵活性和可编程性。

1.5 课程核心场景:事件触发容量压测巡检编排

本课程围绕以下三个关键能力展开,它们共同构成了 k6 在容量压测中的高级定位:

  1. 事件触发(Event Triggering):通过 k6 的 setup()、teardown()、阈值回调(thresholds)和自定义事件,实现压测流程的自动化控制。例如:当错误率超过 5% 时自动停止测试并触发告警。
  2. 容量压测(Capacity Testing):使用 k6 的 ramping-vus 和 stages 配置,模拟从低到高的渐进式负载,找到系统的拐点(Knee Point)和极限容量。
  3. 巡检编排(Health Check Orchestration):将 k6 脚本嵌入到 Kubernetes CronJob、GitHub Actions 或 Argo Workflows 中,实现定时或事件驱动的自动化巡检,持续验证系统容量健康度。
课程三大核心能力关系图 事件触发 setup/teardown/阈值回调 容量压测 ramping-vus / stages 巡检编排 CronJob / CI/CD 集成 自动化容量验证体系 可重复 · 可观测 · 可告警
课程收益:完成本课程后,你将能够独立搭建一套基于 k6 的自动化容量压测巡检系统,实现“代码即压测、压测即巡检、巡检即告警”的 DevOps 闭环。