Skip to content

从 0 开始学微服务:系统学习路线与完整规划


一、最终要掌握的能力图谱

1. 微服务架构设计能力

你要能回答:

  • 什么时候该从单体拆微服务?什么时候不该拆?
  • 服务怎么拆?按业务拆还是按功能拆?拆多细算合适?
  • 一个电商系统拆成用户服务、商品服务、订单服务、支付服务、库存服务,边界怎么划?
  • DDD(领域驱动设计)和微服务拆分是什么关系?
  • 服务之间怎么通信?同步还是异步?HTTP 还是 RPC?
  • 共享数据库还是每个服务独立数据库?
  • 微服务的"分布式单体"陷阱是什么?怎么避免?

这部分决定了你微服务架构的"下限"。拆错了,后面所有治理都是在还债。


2. 服务通信与 RPC 框架能力

你要能做到:

  • 理解 HTTP REST、gRPC、Dubbo 三种通信方式的区别和适用场景
  • 知道 RPC 调用的完整流程:序列化、网络传输、反序列化、代理
  • 能说清 Dubbo 的架构:Provider、Consumer、Registry、Monitor
  • 知道 gRPC 基于 HTTP/2 + Protobuf 的优势
  • 理解 IDL(接口定义语言)的作用
  • 知道同步调用和异步调用各自的问题
  • 能根据团队技术栈和业务场景做 RPC 框架选型

这部分是微服务最基础、最常用、最实战的能力。


3. 服务注册与发现能力

你要掌握:

  • 为什么微服务需要注册中心?
  • 注册中心的核心功能:注册、发现、健康检查、变更通知
  • Zookeeper、Eureka、Nacos、Consul 各自的特点和选型
  • CP 和 AP 的区别,注册中心选 CP 还是 AP?
  • 服务注册的流程:启动注册、心跳续约、下线注销
  • 服务发现的方式:客户端发现 vs 服务端发现
  • 注册中心挂了怎么办?本地缓存兜底机制
  • 多机房场景下注册中心怎么部署?

这部分决定了你的服务能不能找到彼此。


4. 服务治理能力

你要掌握:

  • 负载均衡:随机、轮询、加权、一致性哈希各自适用场景
  • 服务路由:按版本路由、按标签路由、灰度路由
  • 服务限流:令牌桶、漏桶、滑动窗口
  • 服务熔断:什么是熔断?Hystrix / Sentinel / Resilience4j 怎么选?
  • 服务降级:核心链路保护,非核心功能降级
  • 超时与重试:为什么重试不能乱加?幂等性怎么保证?
  • 服务鉴权:服务间调用怎么做认证?
  • 流量染色与灰度发布

这部分决定了你的微服务系统能不能扛住线上压力。


5. API 网关能力

你要掌握:

  • 为什么需要 API 网关?
  • 网关的核心功能:路由、鉴权、限流、协议转换、日志
  • Kong、Spring Cloud Gateway、APISIX、Envoy 的选型
  • 网关和 BFF(Backend For Frontend)的区别
  • 网关的部署架构:单网关 vs 多级网关
  • 网关怎么做灰度?怎么做 AB 测试?
  • 网关的性能瓶颈和优化

这部分是微服务的统一入口,也是安全和流量控制的第一道防线。


6. 配置中心与服务配置管理能力

你要掌握:

  • 为什么微服务需要配置中心?
  • 本地配置 vs 远程配置 vs 环境变量
  • Nacos Config、Apollo、Spring Cloud Config 的选型
  • 配置的分类:环境配置、业务配置、开关配置
  • 动态配置热更新机制
  • 配置版本管理与灰度发布
  • 敏感配置(数据库密码、密钥)怎么管理?

这部分决定了你能不能灵活管理几十上百个服务的配置。


7. 分布式数据一致性能力

你要掌握:

  • CAP 定理到底在说什么?
  • BASE 理论:最终一致性
  • 分布式事务的几种方案:2PC、TCC、Saga、本地消息表、事务消息
  • Seata 框架的 AT/TCC/Saga 模式
  • 为什么大多数场景推荐最终一致性而不是强一致?
  • 跨服务数据一致性的实战方案
  • 幂等性设计:为什么这是分布式系统的基石?
  • 补偿机制和对账机制

这部分是微服务最难、最容易出问题的地方。


8. 可观测性能力(监控、日志、链路追踪)

你要掌握:

  • 可观测性三大支柱:Metrics(指标)、Logging(日志)、Tracing(链路追踪)
  • 全链路追踪原理:TraceID、SpanID 怎么传递?
  • Pinpoint、Zipkin、Jaeger、SkyWalking 的选型
  • 日志采集:ELK(Elasticsearch + Logstash + Kibana)
  • 指标监控:Prometheus + Grafana
  • 告警怎么设计?告警疲劳怎么避免?
  • 怎么从一个请求追踪到整个调用链?
  • 怎么定位"某个服务偶尔超时"的根因?

这部分决定了你线上出问题时能不能快速定位和解决。


9. 容器化与 DevOps 能力

你要掌握:

  • Docker 基础:镜像、容器、Dockerfile、docker-compose
  • Kubernetes 核心概念:Pod、Service、Deployment、Ingress、ConfigMap、Secret
  • 微服务怎么打包成容器镜像?
  • K8s 怎么部署微服务?怎么做滚动更新?
  • 怎么做服务的弹性伸缩(HPA)?
  • CI/CD 流水线:代码提交 -> 构建 -> 测试 -> 部署自动化
  • Jenkins / GitLab CI / GitHub Actions 基本使用
  • 容器编排和服务治理的关系

这部分决定了你的微服务能不能高效交付和运维。


10. Service Mesh(服务网格)能力

你要掌握:

  • 什么是 Service Mesh?为什么需要它?
  • Sidecar 模式是什么?
  • Istio 的架构:数据面(Envoy)+ 控制面
  • Service Mesh 和传统 SDK 治理的区别
  • Service Mesh 的优势:语言无关、治理下沉、统一管控
  • Service Mesh 的代价:性能损耗、运维复杂度
  • 什么团队适合上 Mesh?什么团队暂时不需要?

这部分是微服务架构的进阶方向。


二、学习路线:从基础到高阶

第一阶段:微服务基础认知与架构设计

目标:先搞清楚"为什么要微服务,怎么拆"。

要学的内容:

  • 单体架构的优势和痛点
  • 微服务架构的核心特征
  • 微服务的优势与代价
  • 什么时候该拆微服务?什么时候不该拆?
  • 服务拆分原则:高内聚、低耦合
  • DDD 领域驱动设计基础:限界上下文、聚合根
  • 服务拆分实战:电商系统怎么拆?
  • 微服务的数据库策略:每个服务独立数据库
  • 微服务的常见反模式:分布式单体、过度拆分、共享数据库

重点认知:

不是所有系统都需要微服务。3 个人的团队硬上微服务,可能比单体更痛苦。拆服务的核心不是"拆代码",而是"拆业务边界和数据边界"。如果两个服务离了对方都没法工作,那就不应该拆开。

实战建议: 自己设计一套电商系统的服务拆分方案,画出服务边界图。


第二阶段:服务通信与 RPC 框架

目标:进入微服务的核心通信层。

必学内容:

  • HTTP REST 通信
  • RPC 通信原理:代理、序列化、传输、反序列化
  • Dubbo 核心架构与使用
  • gRPC 核心架构与使用
  • Protobuf(Protocol Buffers)序列化
  • 同步调用 vs 异步消息(MQ)
  • Dubbo vs gRPC vs Spring Cloud Feign 选型
  • 服务契约管理与接口版本化

实战建议: 搭建两个服务,通过 Dubbo/gRPC 调用,体验完整流程。


第三阶段:服务注册发现与配置中心

目标:让服务能自动找到彼此,配置能统一管理。

必学内容:

  • 注册中心原理:注册、发现、心跳、通知
  • Zookeeper 基础与特点(CP)
  • Nacos 注册中心与配置中心(AP/CP 可切换)
  • Consul、Eureka 了解即可
  • 客户端发现 vs 服务端发现
  • 配置中心的核心功能:动态推送、版本管理、环境隔离
  • Nacos Config / Apollo 选型

必须搞懂的问题:

问题要点
注册中心选 CP 还是 AP?大多数场景选 AP,可用性优先
注册中心挂了会怎样?已有调用靠本地缓存继续,新服务发现不了
配置和本地文件冲突了?远程配置优先级更高
敏感配置怎么管?加密存储 + 权限控制

实战建议: 本地搭建 Nacos,实现 3 个服务的注册与发现,模拟宕机场景。


第四阶段:服务治理(限流、熔断、降级、负载均衡)

目标:让微服务系统具备生产级的容错和弹性能力。

必学内容:

  • 负载均衡策略:随机、轮询、加权轮询、一致性哈希
  • 服务限流:令牌桶算法、漏桶算法、滑动窗口
  • 服务熔断:熔断器状态机(关闭 -> 打开 -> 半开)
  • 服务降级:返回默认值、返回缓存、关闭非核心功能
  • Sentinel 核心使用(推荐)
  • 超时控制与重试机制
  • 灰度发布、蓝绿发布、金丝雀发布

重点场景:

场景解决方案
下游服务变慢熔断 + 超时控制,防止拖垮上游
秒杀场景限流,超出容量直接拒绝
服务出问题降级返回兜底数据,不全站崩溃
重试风暴先保证幂等,再加重试
灰度发布只放 5% 流量到新版本

实战建议: 基于 Sentinel 配置限流、熔断、降级,设计灰度发布方案。


第五阶段:API 网关

目标:统一微服务的流量入口。

必学内容:

  • 网关核心职责:路由转发、鉴权认证、限流熔断、协议转换、日志
  • Spring Cloud Gateway 核心使用
  • Kong / APISIX 了解
  • 网关层 JWT 鉴权
  • 网关高可用部署

实战建议: 搭建 Spring Cloud Gateway,配置路由、鉴权、限流。


第六阶段:分布式数据一致性

目标:解决微服务最难的问题。

必学内容:

  • CAP 定理 / BASE 理论
  • 分布式事务方案对比:
方案一致性性能复杂度适用场景
2PC强一致传统数据库,少用
TCC强一致资金类强一致场景
Saga最终一致长流程业务编排
本地消息表最终一致大多数业务场景
事务消息最终一致有 MQ 的场景
  • Seata 框架使用
  • 幂等性设计:token 机制、唯一索引、状态机
  • 补偿机制与对账机制

实战建议: 设计"下单 -> 扣库存 -> 扣余额"场景,用本地消息表实现最终一致性。


第七阶段:可观测性

目标:让微服务系统"可视、可查、可追踪"。

必学内容:

  • 全链路追踪原理:TraceID、SpanID
  • SkyWalking / Zipkin 选型
  • ELK 日志采集
  • Prometheus + Grafana 指标监控
  • 核心监控指标:QPS、RT、错误率、CPU、内存
  • 告警设计与分级

实战建议: 接入 SkyWalking + ELK + Prometheus,注入 TraceID 实现跨服务日志关联。


第八阶段:容器化与 CI/CD

目标:让微服务具备自动化交付和弹性运维能力。

必学内容:

  • Docker 基础
  • Kubernetes 核心概念:Pod、Deployment、Service、Ingress、ConfigMap、HPA
  • 微服务 K8s 部署方案
  • 滚动更新与回滚
  • CI/CD 流水线

实战建议: 将微服务容器化,部署到本地 K8s,搭建 CI/CD 流水线。


第九阶段:Service Mesh

目标:了解微服务架构的演进方向。

必学内容:

  • Sidecar 代理模式
  • Istio 架构:Envoy + Istiod
  • Service Mesh vs SDK 治理
  • 流量管理、安全、可观测性

第十阶段:面试题 + 项目实战复盘

  • 按专题刷面试题
  • 画完整的微服务架构图
  • 复盘实验
  • 模拟面试

三、大厂常见坑点

1. 过度拆分服务

3 个人的团队拆了 20 个服务,联调成本比开发成本还高。

先做好模块化,再考虑拆服务。拆分粒度跟团队规模匹配。

2. 分布式事务到处用

每个跨服务操作都上 Seata,性能急剧下降。

大多数场景用最终一致性,优先考虑本地消息表 + 异步补偿。

3. 同步调用链路过长

A -> B -> C -> D -> E

任何一个环节慢/挂,整条链路都受影响。

同步链路不超过 3~4 层,能异步的用消息队列解耦。

4. 没有做幂等就加重试

重试导致重复下单、重复扣款。

先做幂等,再加重试。 幂等手段:唯一请求 ID、数据库唯一索引、状态机。

5. 注册中心当配置中心用

在 Zookeeper 里存大量业务配置,负载过高。

注册中心只管服务注册与发现,配置走专门的配置中心。

6. 日志和监控形同虚设

没有 TraceID,跨服务查日志靠猜。告警太多全部忽略。

日志必须包含 TraceID。告警要分级,P0 必须响应。

7. 全部流量走同步

下单后同步发短信、发邮件、推通知,一个环节慢用户下单就慢。

核心链路同步,非核心链路异步,消息队列做解耦。

8. 不做灰度直接全量发布

新版本有 bug,全量用户受影响。

先灰度 1%~5% 流量,观察监控正常后逐步放量。

9. 微服务共享数据库

多个服务直连同一个数据库,表结构耦合,本质还是"分布式单体"。

每个服务有自己的数据库,通过 API 交换数据。


四、12~16 周学习计划

周数阶段重点内容
1-2架构设计单体 vs 微服务、拆分原则、DDD 基础
3-4RPC 通信Dubbo、gRPC、Protobuf、框架选型
5注册发现Nacos、配置中心、动态配置
6-7服务治理限流、熔断、降级、Sentinel、灰度
8API 网关Spring Cloud Gateway、鉴权、限流
9-10数据一致性分布式事务、Seata、幂等、补偿
11可观测性SkyWalking、ELK、Prometheus
12-13容器化Docker、K8s、CI/CD
14Service MeshIstio、Sidecar
15-16面试复盘按专题刷题、画架构图、模拟面试

五、优先级建议

必须精通

  • 微服务拆分原则与方法
  • RPC 通信(至少精通 Dubbo 或 gRPC 之一)
  • 服务注册与发现(Nacos)
  • 服务治理(限流、熔断、降级)
  • 分布式数据一致性方案
  • 全链路追踪
  • Docker + K8s 基础
  • 幂等性设计

可以先掌握到"会讲"

  • Service Mesh 原理
  • Istio 深入
  • 多机房流量调度
  • 异地多活
  • DDD 深入
  • 分布式事务高阶(Saga 编排模式)

六、推荐学习方式

微服务最怕"看架构图觉得都懂了,自己搭就废了"。

  1. 每个知识点都动手搭环境 -- 学注册中心就自己搭 Nacos,停掉看变化
  2. 每学完一个模块就输出一篇总结 -- 输出极大提升掌握度
  3. 建自己的面试题库 + 实验库 -- 每道题写标准答案 + 原理 + 案例
  4. 用电商微服务项目贯穿 -- 覆盖所有微服务问题

七、面试高频问题清单

架构设计类

  • 什么是微服务?和单体架构有什么区别?
  • 微服务的优缺点各是什么?
  • 你怎么判断一个系统该不该拆微服务?
  • 微服务怎么拆分?有什么原则?
  • 什么是分布式单体?怎么避免?

通信类

  • RPC 和 HTTP 有什么区别?
  • Dubbo 的架构是什么?
  • gRPC 为什么快?
  • 同步调用和异步消息各自适合什么场景?

注册发现类

  • 注册中心的作用是什么?
  • Nacos 和 Zookeeper 有什么区别?
  • 注册中心选 CP 还是 AP?为什么?
  • 注册中心挂了会怎样?

服务治理类

  • 限流算法有哪些?各自优缺点?
  • 什么是服务熔断?熔断器的状态机?
  • 重试有什么风险?怎么避免?
  • 灰度发布怎么做?

数据一致性类

  • CAP 定理是什么?
  • 分布式事务有哪些方案?
  • TCC 和 Saga 的区别?
  • 什么是幂等?怎么设计?

可观测性类

  • 全链路追踪原理是什么?
  • TraceID 怎么跨服务传递?
  • 怎么定位"某个服务偶尔超时"的问题?

容器化与部署类

  • Docker 和虚拟机的区别?
  • K8s 核心概念?
  • 微服务怎么做滚动更新?

Service Mesh 类

  • 什么是 Service Mesh?
  • Sidecar 模式是什么?
  • Service Mesh 和传统 SDK 治理的区别?

实战项目: 本路线核心知识点已在 Ecommerce Microservices 项目中落地 -- 6 服务独立部署、API 网关路由 + 认证 + 限流 + 熔断、Kafka 异步通信、TraceID 全链路追踪、Docker Compose 一键启动。

基于 VitePress 构建