Java 微服务与分布式教程
Java 技术体系第三层:把可靠企业单体扩展为可治理、可观测、可恢复的分布式服务系统。
为什么不能一开始就拆微服务
知识点:理解单体、分层单体、模块化单体、微服务的区别;理解微服务引入网络、部署、一致性和运维成本;建立“先有边界,再做拆分”的架构原则
Spring Cloud 技术地图与版本兼容
知识点:理解 Spring Boot 与 Spring Cloud 的关系;认识 Release Train / BOM 版本管理;认识 Config、Gateway、OpenFeign、LoadBalancer、CircuitBreaker 等模块
为什么需要服务注册与发现
知识点:理解 IP/端口动态变化带来的寻址问题;理解 Registry、Service Instance、Heartbeat/Health;理解服务发现替代硬编码地址
OpenFeign 声明式 HTTP 客户端
知识点:理解接口式远程调用;掌握 @FeignClient、请求参数和响应 DTO;理解底层仍然是 HTTP 请求
网关为什么存在
知识点:理解统一入口、路由、认证、限流、灰度等职责;理解 Gateway 与 Nginx 的层次和协作;避免把所有业务逻辑放进网关
级联故障与雪崩效应
知识点:理解一个慢下游如何耗尽上游线程/连接池;理解同步依赖链的故障传播;建立保护系统而不是只保护单接口的思维
Redis 持久化:RDB 与 AOF
知识点:理解快照、AOF 追加与 rewrite;理解性能与数据安全权衡;知道缓存与持久化 Redis 的不同定位
为什么引入消息队列
知识点:理解解耦、异步、削峰;理解同步调用与事件驱动的取舍;识别不应该用 MQ 的场景
Kafka 核心模型
知识点:理解 Topic、Partition、Replica、Offset、Consumer Group;理解高吞吐日志流的设计目标;理解分区内顺序
CAP、BASE 与一致性模型
知识点:理解网络分区下的约束;区分强一致、最终一致、读己之写等概念;避免把 CAP 机械套到单机事务
Elasticsearch 与倒排索引
知识点:理解全文检索为什么不同于 SQL LIKE;理解 Index、Document、Mapping、倒排索引;认识分片与副本
日志、Metrics、Trace 三支柱
知识点:区分事件日志、指标和链路追踪;理解三个信号如何互相定位;建立可观测而非“出错再打印日志”的思维
Docker 化微服务
知识点:理解 Image、Container、Dockerfile;为多个服务构建独立镜像;理解容器网络和环境变量
模块化单体与 Spring Modulith
知识点:理解 Application Module、模块依赖和边界验证;使用领域事件降低模块直接耦合;把 Modulith 作为单体到微服务的过渡层
拆分第一个微服务
知识点:从模块化单体选择一个清晰业务域拆出服务;理解独立端口、独立进程、独立部署;保持 API 契约与数据所有权
Nacos 服务注册
知识点:理解 Nacos Server、namespace、group、service;完成服务注册与实例查看;理解临时/持久实例等基础概念
Spring Cloud LoadBalancer
知识点:理解客户端负载均衡;认识轮询等基础策略;理解服务实例选择与健康状态
Spring Cloud Gateway 路由模型
知识点:理解 Route、Predicate、Filter;掌握 Path/Host 等典型 Predicate;掌握 RewritePath、Header 等基础 Filter
Circuit Breaker 熔断器
知识点:理解 CLOSED/OPEN/HALF_OPEN 状态;理解失败率/慢调用触发;使用 Spring Cloud CircuitBreaker / Resilience4j 的基本模型
过期删除与内存淘汰
知识点:理解惰性/定期删除的基本思想;理解 LRU/LFU 等淘汰策略;处理 maxmemory 与热点数据
AMQP 与 RabbitMQ 核心模型
知识点:理解 Producer、Exchange、Queue、Binding、RoutingKey、Consumer;理解 Connection 与 Channel;理解消息属性和序列化
Kafka Producer 与 Consumer 基础
知识点:理解 partition key、acks、offset commit;认识重复消费和 rebalance;建立消息可靠性基本模型
分布式 ID
知识点:理解数据库自增在多服务/分库场景的限制;认识 UUID、号段、Snowflake;理解唯一性、趋势递增、时钟回拨等权衡
Elasticsearch 查询与聚合基础
知识点:理解 term/match/bool query;理解 analyzer、keyword/text;认识 aggregation
Micrometer 与 Prometheus
知识点:理解 MeterRegistry;掌握 Counter、Gauge、Timer;理解 Prometheus pull/scrape 模型
Docker Compose 本地微服务环境
知识点:编排服务、MySQL、Redis、Nacos、RabbitMQ;理解 depends_on 不等于 readiness;构建可重复开发环境
领域驱动的服务边界
知识点:理解业务能力、Bounded Context、聚合的基础含义;避免按 Controller/表机械拆服务;从订单、库存、用户等业务域分析服务边界
服务间 HTTP 调用的基本模型
知识点:理解同步远程调用与本地方法调用本质不同;理解序列化、网络延迟、错误码和超时;使用 RestClient/WebClient 建立最小服务调用
Nacos 服务发现与客户端
知识点:通过服务名发现实例;理解客户端缓存和实例列表;认识健康检查与实例下线
Timeout:所有远程调用必须有时间边界
知识点:理解连接超时与读取超时;理解无限等待如何拖垮线程池;为不同依赖设置合理 timeout
Gateway 与服务发现
知识点:使用服务名进行 lb:// 路由;理解动态实例与网关路由;理解网关调用链
Fallback 与服务降级
知识点:区分 fallback、默认值、缓存数据和业务失败;避免用假成功掩盖核心交易失败;为非关键能力设计可接受降级
BigKey、HotKey 与慢查询
知识点:识别 BigKey/HotKey;掌握 SCAN、slowlog 等诊断思路;理解网络带宽、CPU、内存与单线程阻塞
Exchange 路由
知识点:掌握 direct、fanout、topic;理解 binding key 与 routing key;按事件类型设计消息路由
RocketMQ 核心概念
知识点:认识 NameServer、Broker、Topic、Queue、Consumer Group;理解延迟/顺序/事务消息等典型能力;认识国内业务系统中的常见使用场景
跨服务幂等
知识点:理解客户端重试、网关重试、MQ 重投带来的重复;设计 requestId/idempotency key;利用唯一约束和业务状态实现幂等
MySQL → Elasticsearch 数据同步
知识点:理解双写问题;认识 MQ/CDC/Outbox 等同步方案;明确 MySQL 与 ES 的真相源边界
Grafana 与告警
知识点:构建服务/接口 Dashboard;理解延迟、流量、错误、饱和度;设计可行动的告警而非噪声
Kubernetes 入门边界
知识点:理解 Pod、Deployment、Service、ConfigMap、Secret;认识 readiness/liveness;明确 K8s 深度运维属于云原生/DevOps 独立课程
分布式系统新增了哪些问题
知识点:理解远程调用失败、部分失败、网络分区;理解超时、重试、幂等、一致性、服务发现、可观测性为何出现;建立 failure is normal 的分布式思维
微服务配置与环境隔离
知识点:理解每个服务的 application 配置与环境变量;区分本地、测试、生产配置;为配置中心做准备
Nacos 配置中心
知识点:理解配置集中管理与动态刷新;掌握 DataId、Group、Namespace;区分公共配置、服务配置与环境配置
Retry:什么时候可以重试
知识点:理解瞬时故障与永久故障;理解退避、最大次数与重试风暴;幂等操作与非幂等操作采用不同重试策略
网关认证与身份透传
知识点:理解入口 Token 校验与下游身份信息传递;避免只在网关做权限导致内部服务裸奔;建立网关认证 + 服务资源授权的两层模型
隔离:线程池与信号量思想
知识点:理解资源隔离为什么能控制故障半径;理解 Bulkhead 模式;识别共享线程池/连接池的风险
主从复制与 Sentinel
知识点:理解 replica、复制延迟;理解 Sentinel 监控、选主、故障转移;认识高可用不等于强一致
Spring AMQP
知识点:掌握 RabbitTemplate 与 @RabbitListener;配置 Queue/Exchange/Binding;理解 MessageConverter
RabbitMQ、Kafka、RocketMQ 如何选
知识点:从吞吐、延迟、回溯、路由、顺序、事务能力比较;根据业务语义选型;避免“哪个更高级”式结论
分布式事务问题
知识点:理解一个业务跨多个数据库后本地事务失效;区分强一致事务与最终一致;识别跨服务事务边界
MongoDB 与文档数据库认知
知识点:理解 Document Model;认识适合半结构数据的场景;比较 MongoDB 与关系数据库的基本边界
OpenTelemetry 与分布式 Trace
知识点:理解 Trace、Span、Context Propagation;理解跨 HTTP/MQ 传播 trace context;关联日志、指标和 Trace
高可用设计
知识点:识别单点和共享依赖;理解副本、故障转移、容量冗余;设计优雅降级与恢复
注册中心与配置中心故障边界
知识点:理解 Registry 不可用时客户端缓存的意义;避免把配置中心变成业务数据中心;建立配置变更、回滚和权限意识
Feign 错误处理与契约演进
知识点:理解远程错误映射;避免把下游异常原样泄露到上游;处理 API 版本和字段兼容
网关限流、灰度与跨域
知识点:理解全局 CORS;认识 Rate Limiter、灰度路由、Header 路由;明确网关是治理入口而非业务数据库访问层
限流算法
知识点:理解固定窗口、滑动窗口、漏桶、令牌桶;理解 QPS、突发流量和排队;按用户、接口、租户设计限流维度
Redis Cluster
知识点:理解 hash slot、分片和节点;理解 key 跨 slot 的限制;认识扩缩容和故障转移
Publisher Confirm 与 Return
知识点:理解生产者到 Broker 的确认;处理 unroutable message;理解 durable/persistent 的边界
2PC、TCC、Saga
知识点:理解两阶段提交思想与阻塞问题;理解 TCC Try/Confirm/Cancel;理解 Saga 长事务补偿
分布式故障排查方法
知识点:按 Gateway → Service → DB/Redis/MQ 链路定位;区分客户端错误、依赖超时、资源耗尽和数据一致性问题;使用证据而不是猜测恢复服务
微服务综合项目:从模块化单体拆分
知识点:选择一个已有模块化单体作为基线;只拆有清晰业务边界的服务;加入注册发现、网关、远程调用、Redis、MQ、Trace
Sentinel 与 Resilience4j 的定位
知识点:理解 Sentinel 流控/熔断/热点保护的生态位置;理解 Resilience4j 与 Spring Cloud CircuitBreaker;根据团队栈和治理目标选择而不是重复叠加
分布式锁基础
知识点:理解单机 synchronized/Lock 为什么无法跨进程;使用 SET NX PX + 唯一 token;理解安全释放、锁超时和业务执行时间
Consumer Ack、Nack 与 Prefetch
知识点:理解自动/手动 Ack;理解 Nack/Reject/requeue;使用 prefetch 控制消费者负载
Seata 与 AT/TCC/Saga 概念
知识点:理解 Seata 在 Spring Cloud Alibaba 中的位置;认识 AT 模式的使用前提;不要把分布式事务当成默认方案
微服务验收与面试深挖
知识点:能够解释为何拆、为何不继续拆;用失败场景证明幂等、消息可靠性、一致性与降级;能回答 Spring Cloud、Redis、MQ、分布式事务等高频追问
Redisson 分布式锁
知识点:理解 RLock、Watchdog、可重入;认识 MultiLock/RedLock 等概念边界;理解 Redis 锁不能替代数据库约束和事务正确性
TTL、DLX 与延迟业务
知识点:理解消息/队列 TTL;理解 Dead Letter Exchange;用 TTL + DLX 建模超时订单并分析局限
Outbox、Inbox 与事务消息
知识点:理解业务写入和事件记录同事务提交;理解发布重试与消费者 Inbox;建立可靠最终一致性模式
消息重试与失败队列
知识点:理解有限重试、退避和停车场队列;避免 poison message 无限重试;建立人工补偿/告警机制
重复消费与 Inbox 幂等
知识点:理解 at-least-once 语义;使用 eventId + 唯一约束完成消费者去重;数据库提交成功后再 Ack
消息丢失、积压与顺序性
知识点:从 Producer/Broker/Consumer 三段分析可靠性;理解消费积压、扩容和流量恢复;理解全局顺序和局部顺序的代价