1. 课程导学与项目背景
1.1 支付订单系统微服务架构概览
本课程以一个贴近真实业务的支付订单系统为实战载体。该系统采用 NestJS 微服务架构,模拟电商平台从“用户下单”到“支付完成”的完整链路。整体架构遵循领域驱动设计(DDD)原则,将核心业务拆分为多个独立的微服务模块。
核心微服务模块清单:
| 微服务名称 | 核心职责 | 技术栈(NestJS 生态) |
|---|---|---|
| API Gateway | 统一入口、路由转发、认证鉴权、限流 | @nestjs/graphql, express-rate-limit |
| Order Service | 订单创建、状态管理、超时取消 | TypeORM, PostgreSQL, Bull Queue |
| Payment Service | 支付渠道对接、支付结果回调、退款 | @nestjs/axios, Redis, Stripe SDK |
| Inventory Service | 库存预占、释放、库存同步 | Redis, MongoDB |
| Notification Service | 短信、邮件、站内信推送 | @nestjs/mailer, RabbitMQ |
服务间通信采用混合模式:同步调用(gRPC / HTTP)用于实时查询,异步消息(RabbitMQ / Redis Pub/Sub)用于事件驱动和最终一致性。这种架构在带来高内聚、低耦合、独立部署等优势的同时,也引入了显著的可观测性挑战。
1.2 为什么需要性能监控与链路追踪
在微服务架构中,一个用户请求往往需要跨越多个服务节点才能完成。例如,一次“下单支付”操作会依次经过 API Gateway、Order Service、Payment Service、Inventory Service,并可能触发 Notification Service 的异步通知。这种分布式调用链给系统带来了三大核心痛点:
- 故障定位困难:当用户反馈“支付失败”时,问题可能出在任何一个服务、数据库、消息队列或第三方支付渠道。传统单机日志(ELK)难以将散落在多个服务中的日志片段关联起来。
- 性能瓶颈模糊:一个接口响应慢,究竟是 Order Service 的数据库查询慢,还是 Payment Service 调用第三方 API 超时?没有端到端的链路追踪,无法量化每个环节的耗时。
- 依赖关系不透明:随着服务数量增长,服务间的调用拓扑变得复杂。缺乏可视化工具,运维人员难以快速识别关键路径和单点故障风险。
可观测性三大支柱: 日志(Logging)、指标(Metrics)、链路追踪(Tracing)。本课程重点聚焦 链路追踪 与 性能指标监控 的集成实践,以 OpenTelemetry 为核心标准。
引入性能监控与链路追踪后,团队可以获得以下核心能力:
| 能力维度 | 具体收益 | 对应工具/技术 |
|---|---|---|
| 分布式追踪 | 端到端追踪请求路径,定位故障节点 | OpenTelemetry, Jaeger, Zipkin |
| 性能剖析 | 量化每个 Span 的耗时,识别慢调用 | Prometheus, Grafana |
| 拓扑可视化 | 自动生成服务依赖关系图 | Jaeger UI, Grafana Node Graph |
| 告警与 SLO | 基于延迟、错误率、吞吐量设置告警 | Prometheus Alertmanager |
1.3 课程目标与学习路径
本课程旨在帮助学员从零到一,在 NestJS 微服务项目中构建一套生产级的性能监控与链路追踪体系。课程采用“理论 + 实战”双线并行的方式,最终交付一个可运行的、具备完整可观测性的支付订单系统。
课程三大核心目标:
- 目标一:掌握 OpenTelemetry 在 NestJS 中的集成 — 学会使用 @opentelemetry/instrumentation-http、@opentelemetry/instrumentation-grpc、@opentelemetry/exporter-jaeger 等核心库,为微服务注入自动埋点。
- 目标二:构建性能指标监控体系 — 使用 Prometheus 客户端库暴露自定义指标(请求延迟、错误率、并发数),并通过 Grafana 搭建实时监控仪表盘。
- 目标三:实现分布式链路追踪与故障诊断 — 在 Jaeger UI 中查看完整的 Trace 拓扑,快速定位慢 Span 和错误 Span,并基于 Trace 数据优化系统性能。
课程学习路径分为五个阶段,循序渐进:
| 阶段 | 章节范围 | 核心产出 |
|---|---|---|
| 第一阶段:基础搭建 | 第 1-5 章 | 支付订单微服务项目初始化,Docker Compose 部署基础设施(Jaeger, Prometheus, Grafana) |
| 第二阶段:链路追踪 | 第 6-12 章 | OpenTelemetry SDK 集成,自动/手动埋点,Trace Context 传播,Jaeger 链路查看 |
| 第三阶段:指标监控 | 第 13-20 章 | Prometheus 指标暴露,Grafana 仪表盘设计,自定义业务指标(订单量、支付成功率) |
| 第四阶段:高级实战 | 第 21-26 章 | 告警规则配置,Trace 与 Metrics 关联分析,性能瓶颈优化实战 |
| 第五阶段:总结与扩展 | 第 27-30 章 | 项目复盘,生产环境最佳实践,日志与链路追踪的关联方案 |
前置要求: 学员需具备 NestJS 基础(模块、控制器、服务、依赖注入)、Node.js 异步编程经验,以及 Docker 基本操作能力。课程中涉及的基础设施(Jaeger、Prometheus、Grafana)将通过 Docker Compose 一键部署,无需提前安装。
通过本课程的学习,你将能够独立为任何 NestJS 微服务项目添加可观测性能力,从“黑盒”运维走向“白盒”诊断,显著提升系统的稳定性和排障效率。