Java 微服务与分布式教程

Java 技术体系第三层:把可靠企业单体扩展为可治理、可观测、可恢复的分布式服务系统。

为什么不能一开始就拆微服务

知识点:理解单体、分层单体、模块化单体、微服务的区别;理解微服务引入网络、部署、一致性和运维成本;建立“先有边界,再做拆分”的架构原则

Spring Cloud 技术地图与版本兼容

知识点:理解 Spring Boot 与 Spring Cloud 的关系;认识 Release Train / BOM 版本管理;认识 Config、Gateway、OpenFeign、LoadBalancer、CircuitBreaker 等模块

为什么需要服务注册与发现

知识点:理解 IP/端口动态变化带来的寻址问题;理解 Registry、Service Instance、Heartbeat/Health;理解服务发现替代硬编码地址

网关为什么存在

知识点:理解统一入口、路由、认证、限流、灰度等职责;理解 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

知识点:理解客户端负载均衡;认识轮询等基础策略;理解服务实例选择与健康状态

Circuit Breaker 熔断器

知识点:理解 CLOSED/OPEN/HALF_OPEN 状态;理解失败率/慢调用触发;使用 Spring Cloud CircuitBreaker / Resilience4j 的基本模型

过期删除与内存淘汰

知识点:理解惰性/定期删除的基本思想;理解 LRU/LFU 等淘汰策略;处理 maxmemory 与热点数据

AMQP 与 RabbitMQ 核心模型

知识点:理解 Producer、Exchange、Queue、Binding、RoutingKey、Consumer;理解 Connection 与 Channel;理解消息属性和序列化

分布式 ID

知识点:理解数据库自增在多服务/分库场景的限制;认识 UUID、号段、Snowflake;理解唯一性、趋势递增、时钟回拨等权衡

Micrometer 与 Prometheus

知识点:理解 MeterRegistry;掌握 Counter、Gauge、Timer;理解 Prometheus pull/scrape 模型

领域驱动的服务边界

知识点:理解业务能力、Bounded Context、聚合的基础含义;避免按 Controller/表机械拆服务;从订单、库存、用户等业务域分析服务边界

服务间 HTTP 调用的基本模型

知识点:理解同步远程调用与本地方法调用本质不同;理解序列化、网络延迟、错误码和超时;使用 RestClient/WebClient 建立最小服务调用

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;利用唯一约束和业务状态实现幂等

Grafana 与告警

知识点:构建服务/接口 Dashboard;理解延迟、流量、错误、饱和度;设计可行动的告警而非噪声

Kubernetes 入门边界

知识点:理解 Pod、Deployment、Service、ConfigMap、Secret;认识 readiness/liveness;明确 K8s 深度运维属于云原生/DevOps 独立课程

分布式系统新增了哪些问题

知识点:理解远程调用失败、部分失败、网络分区;理解超时、重试、幂等、一致性、服务发现、可观测性为何出现;建立 failure is normal 的分布式思维

微服务配置与环境隔离

知识点:理解每个服务的 application 配置与环境变量;区分本地、测试、生产配置;为配置中心做准备

Nacos 配置中心

知识点:理解配置集中管理与动态刷新;掌握 DataId、Group、Namespace;区分公共配置、服务配置与环境配置

Retry:什么时候可以重试

知识点:理解瞬时故障与永久故障;理解退避、最大次数与重试风暴;幂等操作与非幂等操作采用不同重试策略

网关认证与身份透传

知识点:理解入口 Token 校验与下游身份信息传递;避免只在网关做权限导致内部服务裸奔;建立网关认证 + 服务资源授权的两层模型

主从复制与 Sentinel

知识点:理解 replica、复制延迟;理解 Sentinel 监控、选主、故障转移;认识高可用不等于强一致

Spring AMQP

知识点:掌握 RabbitTemplate 与 @RabbitListener;配置 Queue/Exchange/Binding;理解 MessageConverter

分布式事务问题

知识点:理解一个业务跨多个数据库后本地事务失效;区分强一致事务与最终一致;识别跨服务事务边界

高可用设计

知识点:识别单点和共享依赖;理解副本、故障转移、容量冗余;设计优雅降级与恢复

注册中心与配置中心故障边界

知识点:理解 Registry 不可用时客户端缓存的意义;避免把配置中心变成业务数据中心;建立配置变更、回滚和权限意识

网关限流、灰度与跨域

知识点:理解全局 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 链路定位;区分客户端错误、依赖超时、资源耗尽和数据一致性问题;使用证据而不是猜测恢复服务

Sentinel 与 Resilience4j 的定位

知识点:理解 Sentinel 流控/熔断/热点保护的生态位置;理解 Resilience4j 与 Spring Cloud CircuitBreaker;根据团队栈和治理目标选择而不是重复叠加

分布式锁基础

知识点:理解单机 synchronized/Lock 为什么无法跨进程;使用 SET NX PX + 唯一 token;理解安全释放、锁超时和业务执行时间

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 三段分析可靠性;理解消费积压、扩容和流量恢复;理解全局顺序和局部顺序的代价