大纲
下面给你一份Golang 微服务与分布式系统的“从入门到进阶”教程大纲(偏工程落地,适合按章节做成系列学习/实践项目)。
- 预备知识与环境
Go 语言必备:模块(go mod)、并发(goroutine/channel/context)、接口与依赖注入、错误处理
开发环境:Go 版本、IDE、Makefile、Docker、Linux 基础、Git 工作流
代码规范:项目结构(常见 Go 项目布局)、lint/format、单元测试基线
- 从单体到服务化的第一步
单体应用的分层:handler/service/repo 的边界
配置管理:环境变量、配置文件、密钥管理的基本原则
日志与错误:结构化日志、错误栈、统一错误码与返回格式
一个最小服务:HTTP API + 健康检查 + 优雅退出(graceful shutdown)
- Go Web 与 API 设计
HTTP 基础:路由、中间件、超时、限流、跨域
API 设计:REST 风格、版本管理、幂等性、分页、过滤/排序
参数校验与安全:输入校验、鉴权(基础到 JWT)、权限模型(RBAC)
OpenAPI/Swagger:文档生成与自动化测试
- 服务间通信
RPC 体系:gRPC 基础、IDL(Proto)、流式/双向流
服务发现与负载均衡:客户端/服务端负载均衡思路
超时与重试:context 传递、deadline、重试策略与退避
熔断与降级:断路器、fallback、隔离(bulkhead)
- 数据层与一致性基础
数据库:MySQL/PostgreSQL 基础、连接池、事务与隔离级别
NoSQL:Redis 缓存、Key 设计、过期策略、热点与穿透/击穿/雪崩
缓存模式:Cache-Aside、Write-Through、延迟双删(及风险)
分布式一致性入门:CAP、强一致/最终一致的取舍
- 消息队列与事件驱动
为什么要 MQ:削峰填谷、解耦、异步化、广播/订阅
典型组件:Kafka/RabbitMQ/NATS(概念与选型维度)
消费语义:至少一次/至多一次/恰好一次(工程上的“近似恰好一次”)
可靠性:重试、死信队列、幂等消费、顺序与分区、延迟消息
事件驱动架构:事件建模、领域事件、Outbox 模式
- 微服务治理与基础设施
配置中心与注册中心:配置动态下发、灰度发布
网关:鉴权、路由、限流、熔断、协议转换
Service Mesh 基础概念:sidecar、数据面/控制面(理解即可)
多环境:dev/staging/prod、环境隔离与配置策略
- 可观测性(必须掌握)
指标 Metrics:QPS、延迟、错误率、饱和度(RED/USE)
日志 Logs:traceID 贯穿、日志分级、采样
链路追踪 Tracing:分布式 trace、span、上下文传播
告警与仪表盘:SLA/SLO、告警降噪、容量与水位线
- 分布式系统核心问题专题
分布式锁:Redis/etcd 方案与坑(可重入、续租、误删、时钟问题)
任务调度:定时任务的分布式化、幂等、抢占与补偿
ID 生成:雪花算法/号段模式/数据库自增的优缺点
分布式事务:2PC、TCC、Saga、补偿事务(选型与适用场景)
一致性与复制:主从、读写分离、复制延迟、双写一致性
- 高并发与性能工程(Go 视角)
pprof:CPU/内存/阻塞/互斥分析
GC 与内存:对象分配、逃逸分析、池化(sync.Pool)
网络优化:连接复用、HTTP2、gRPC 性能调优
限流:令牌桶/漏桶、分布式限流(本地 + 全局)
- 安全与合规
认证与授权:OAuth2/OIDC 基础概念、JWT 风险点
传输安全:TLS、mTLS(概念到实践)
数据安全:脱敏、加密、审计日志
常见漏洞:注入、SSRF、重放攻击、签名与时间窗
- 交付与运维工程化
容器化:Dockerfile 最佳实践、多阶段构建
编排:Kubernetes 基础(部署、服务、Ingress、HPA)
发布策略:滚动/蓝绿/金丝雀、回滚、灰度与流量切分
CI/CD:单测、集成测试、镜像构建、制品管理
- 架构设计与实战项目路线
项目 1:用户/订单/商品三服务 + gRPC + MySQL + Redis
项目 2:引入 MQ 做下单异步化 + Outbox 保证可靠投递
项目 3:治理:限流/熔断/降级 + 全链路追踪 + 指标告警
项目 4:K8s 部署 + 灰度发布 + 自动扩缩容
项目 5:分布式事务(Saga/TCC)落地一个真实业务链路