Skip to main content

大纲

下面给你一份Golang 微服务与分布式系统的“从入门到进阶”教程大纲(偏工程落地,适合按章节做成系列学习/实践项目)。

  1. 预备知识与环境

Go 语言必备:模块(go mod)、并发(goroutine/channel/context)、接口与依赖注入、错误处理

开发环境:Go 版本、IDE、Makefile、Docker、Linux 基础、Git 工作流

代码规范:项目结构(常见 Go 项目布局)、lint/format、单元测试基线

  1. 从单体到服务化的第一步

单体应用的分层:handler/service/repo 的边界

配置管理:环境变量、配置文件、密钥管理的基本原则

日志与错误:结构化日志、错误栈、统一错误码与返回格式

一个最小服务:HTTP API + 健康检查 + 优雅退出(graceful shutdown)

  1. Go Web 与 API 设计

HTTP 基础:路由、中间件、超时、限流、跨域

API 设计:REST 风格、版本管理、幂等性、分页、过滤/排序

参数校验与安全:输入校验、鉴权(基础到 JWT)、权限模型(RBAC)

OpenAPI/Swagger:文档生成与自动化测试

  1. 服务间通信

RPC 体系:gRPC 基础、IDL(Proto)、流式/双向流

服务发现与负载均衡:客户端/服务端负载均衡思路

超时与重试:context 传递、deadline、重试策略与退避

熔断与降级:断路器、fallback、隔离(bulkhead)

  1. 数据层与一致性基础

数据库:MySQL/PostgreSQL 基础、连接池、事务与隔离级别

NoSQL:Redis 缓存、Key 设计、过期策略、热点与穿透/击穿/雪崩

缓存模式:Cache-Aside、Write-Through、延迟双删(及风险)

分布式一致性入门:CAP、强一致/最终一致的取舍

  1. 消息队列与事件驱动

为什么要 MQ:削峰填谷、解耦、异步化、广播/订阅

典型组件:Kafka/RabbitMQ/NATS(概念与选型维度)

消费语义:至少一次/至多一次/恰好一次(工程上的“近似恰好一次”)

可靠性:重试、死信队列、幂等消费、顺序与分区、延迟消息

事件驱动架构:事件建模、领域事件、Outbox 模式

  1. 微服务治理与基础设施

配置中心与注册中心:配置动态下发、灰度发布

网关:鉴权、路由、限流、熔断、协议转换

Service Mesh 基础概念:sidecar、数据面/控制面(理解即可)

多环境:dev/staging/prod、环境隔离与配置策略

  1. 可观测性(必须掌握)

指标 Metrics:QPS、延迟、错误率、饱和度(RED/USE)

日志 Logs:traceID 贯穿、日志分级、采样

链路追踪 Tracing:分布式 trace、span、上下文传播

告警与仪表盘:SLA/SLO、告警降噪、容量与水位线

  1. 分布式系统核心问题专题

分布式锁:Redis/etcd 方案与坑(可重入、续租、误删、时钟问题)

任务调度:定时任务的分布式化、幂等、抢占与补偿

ID 生成:雪花算法/号段模式/数据库自增的优缺点

分布式事务:2PC、TCC、Saga、补偿事务(选型与适用场景)

一致性与复制:主从、读写分离、复制延迟、双写一致性

  1. 高并发与性能工程(Go 视角)

pprof:CPU/内存/阻塞/互斥分析

GC 与内存:对象分配、逃逸分析、池化(sync.Pool)

网络优化:连接复用、HTTP2、gRPC 性能调优

限流:令牌桶/漏桶、分布式限流(本地 + 全局)

  1. 安全与合规

认证与授权:OAuth2/OIDC 基础概念、JWT 风险点

传输安全:TLS、mTLS(概念到实践)

数据安全:脱敏、加密、审计日志

常见漏洞:注入、SSRF、重放攻击、签名与时间窗

  1. 交付与运维工程化

容器化:Dockerfile 最佳实践、多阶段构建

编排:Kubernetes 基础(部署、服务、Ingress、HPA)

发布策略:滚动/蓝绿/金丝雀、回滚、灰度与流量切分

CI/CD:单测、集成测试、镜像构建、制品管理

  1. 架构设计与实战项目路线

项目 1:用户/订单/商品三服务 + gRPC + MySQL + Redis

项目 2:引入 MQ 做下单异步化 + Outbox 保证可靠投递

项目 3:治理:限流/熔断/降级 + 全链路追踪 + 指标告警

项目 4:K8s 部署 + 灰度发布 + 自动扩缩容

项目 5:分布式事务(Saga/TCC)落地一个真实业务链路