1. 课程导学与整体架构:Go微服务中间件链路开发环境全景图

1.1 课程全景与定位

本课程面向已经掌握Go基础语法、了解微服务基本概念的开发者,聚焦于中间件链路开发环境的搭建、配置与调试。你将不再只是“写代码”,而是学会如何构建一个可运行、可调试、可复现的本地微服务中间件沙箱。

课程核心目标: 在本地单机环境下,通过Docker Compose + Go工具链,完整搭建一条包含网关、注册中心、配置中心、链路追踪、日志聚合、消息队列的微服务中间件链路,并实现跨服务的远程调试与断点追踪。

1.2 全景图:Go微服务中间件链路开发环境

下图展示了本课程将要搭建的完整环境拓扑。每个组件都将在后续章节中逐一落地。

Go微服务中间件链路开发环境全景图 Go微服务中间件链路开发环境全景图 服务层 (Go Service Layer) API Gateway User Service Order Service Inventory Svc ...更多 中间件层 (Middleware Layer) Consul / Nacos Jaeger / Zipkin Prometheus + Grafana RabbitMQ / Kafka Redis 基础设施层 (Infrastructure Layer) Docker Compose GoLand / VS Code Delve Debugger Makefile 说明:箭头表示服务调用或依赖关系;所有中间件均通过 Docker Compose 统一编排,支持一键启停。

1.3 课程目标与学习路径

本课程共30章,分为四个阶段。下表清晰展示了每个阶段的核心产出与关键技能。

阶段 章节范围 核心产出 关键技能
基础环境 第1-5章 Docker Compose 编排 + Go 多模块项目结构 docker-compose.yml 编写、Go workspace、Makefile 自动化
中间件集成 第6-15章 Consul 注册中心 + Jaeger 链路追踪 + Prometheus 监控 gRPC/HTTP 双协议注册、OpenTelemetry 埋点、指标暴露
调试与测试 第16-25章 远程调试 + 集成测试 + 日志聚合 Delve 远程调试、docker-compose 调试模式、ELK/Loki 日志
生产化 第26-30章 CI/CD 流水线 + 环境一致性保障 GitHub Actions、Docker 多阶段构建、环境差异排查

1.4 前置知识清单

为了确保学习效果,建议在开始本课程前掌握以下技能。如果某项不熟悉,课程附录提供了快速补强资源。

  • Go 语言基础:结构体、接口、goroutine、channel、标准库 net/http、context。
  • Docker 基础:镜像拉取、容器运行、Dockerfile 编写、docker-compose 基本指令。
  • 微服务概念:服务注册与发现、负载均衡、熔断降级、分布式追踪的基本术语。
  • Linux 命令行:文件操作、网络排查(ping、telnet、curl)、环境变量设置。
💡 学习建议: 每章都配有可运行的代码仓库分支。建议先通读本章内容,再动手拉取代码、运行环境、观察现象,最后尝试修改配置或代码来验证理解。不要跳过“动手调试”环节。

1.5 开发环境全景图(组件关系)

下图从数据流角度展示了请求从外部进入后,经过各中间件和服务的完整路径。这是后续每章调试配置的底层逻辑。

请求链路与中间件交互关系 请求链路与中间件交互关系 外部请求 API Gateway User Service Order Service DB / Cache 中间件:Consul(注册) | Jaeger(追踪) | Prometheus(监控) | RabbitMQ(消息) 基础设施:Docker Compose | GoLand/VS Code | Delve Debugger | Makefile 🔍 调试视角 当请求在 User Service 出现异常时,可通过 Jaeger 查看完整调用链,通过 Delve 在容器内设置断点,通过 Prometheus 查看指标是否异常。

1.6 课程特色与学习公约

  • 可复现:每章提供完整的 docker-compose 文件和代码分支,保证环境一致性。
  • 可调试:所有中间件和服务均配置了远程调试端口,支持断点、日志、指标三联动。
  • 可扩展:课程采用插件式架构设计,新增中间件或服务只需修改配置文件,无需改动核心代码。
⚠️ 重要提醒: 本课程所有环境均基于 docker-compose 运行,请确保你的开发机已安装 Docker Desktop 20.10+ 或 Docker Engine 20.10+。Windows 用户建议使用 WSL2 后端。如果遇到端口冲突,请优先检查本地是否已运行同类服务(如本地 MySQL、Redis 等)。