CC 咖啡猫的工作空间 Coding Space

Java 后端开发知识体系

以 Java 后端工程师成长路径为主线,六个关注域,从搭项目到做方案。


维度总览

┌─ 0. 计算机基础 ────┐  ┌─ 1. 项目工程化 ────┐  ┌─ 2. 业务开发 ──────┐
│ 底层内功             │  │ 项目怎么搭起来       │  │ 功能怎么做出来       │
│ 操作系统/网络/设计模式 │  │ 规范、可维护、可部署  │  │ 正确、安全、一致      │
└────────────────────┘  └────────────────────┘  └────────────────────┘
         根基                      必备                      必备

┌─ 3. 中间件集成 ─────┐  ┌─ 4. 服务治理 ──────┐  ┌─ 5. 可观测性 ──────┐
│ 轮子怎么用好         │  │ 多服务怎么管         │  │ 问题怎么查           │
│ 高性能、解耦、可靠    │  │ 可靠、可控、可扩展    │  │ 看得见、定位准        │
└────────────────────┘  └────────────────────┘  └────────────────────┘
         优化                      优化                  必备+优化

┌─ 6. 系统设计 ───────┐
│ 以上全部怎么串       │
│ 综合运用与方案推演    │
└────────────────────┘
         综合

零、计算机基础

Java 工程师的内功根基,底层基础决定上层建筑。

0.1 操作系统

  • 进程与线程(进程五种状态:创建/就绪/运行/阻塞/结束、线程同步方式:互斥锁/读写锁/信号量/屏障/事件)
  • 用户态与内核态(系统调用、中断、异常、切换开销)
  • 进程间通信(管道/消息队列/共享内存/信号量/套接字/Signal)
  • 进程调度算法(先来先服务/短作业优先/时间片轮转/优先级调度/多级反馈队列)
  • 死锁(四个必要条件:互斥/占有并等待/非抢占/循环等待、预防/避免(银行家算法)/检测/解除)
  • 内存管理(连续分配 vs 非连续分配、分段/分页/段页式、虚拟内存、页面置换算法 LRU/LFU/OPT)
  • 文件系统(硬链接 vs 软链接、inode、磁盘调度算法)
  • Linux 常用命令(性能监控 top/htop/vmstat/iostat、网络 netstat/ss/tcpdump、文件 lsof/find)

0.2 计算机网络

  • 分层模型(OSI 七层 vs TCP/IP 四层、各层协议与设备)
  • 应用层协议(HTTP/HTTPS、DNS、WebSocket、SMTP、FTP)
  • HTTP 演进(1.0 短连接 → 1.1 长连接+管线化 → 2.0 多路复用+头部压缩 → 3.0 QUIC)
  • HTTPS(TLS 握手流程、证书链验证、对称/非对称加密、HSTS)
  • HTTP 状态码(2xx/3xx/4xx/5xx、301 vs 302)
  • TCP/UDP(三次握手四次挥手、TIME_WAIT 与 2MSL、流量控制(滑动窗口)、拥塞控制(慢启动/拥塞避免/快速重传/快速恢复)、粘包与拆包)
  • DNS(解析过程:递归+迭代、DNS 劫持与 HTTPDNS)
  • WebSocket(全双工通信、握手升级、心跳保活、vs 短轮询/长轮询/SSE)
  • CDN 原理(智能调度、回源策略、缓存刷新与预热)

0.3 设计模式

  • 创建型(单例模式 5 种写法、工厂模式/抽象工厂、建造者模式、原型模式)
  • 结构型(适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式)
  • 行为型(模板方法模式、观察者模式、策略模式、责任链模式、状态模式、命令模式)
  • 六大设计原则(单一职责、开闭原则、里氏代换、依赖倒置、接口隔离、迪米特法则)
  • Spring/Spring Boot 源码中的设计模式应用(BeanFactory 工厂模式、AOP 代理模式、事件驱动 观察者模式、HandlerInterceptor 责任链模式)

一、项目工程化

项目从零到跑起来,骨架搭得规范,后续开发才不失控。

1.1 语言基础

  • Java 核心语法(面向对象、封装/继承/多态、抽象类与接口)
  • 泛型(类型擦除、通配符、PECS 原则)
  • 注解(内置注解、元注解、自定义注解与注解处理器)
  • 反射(Class 对象、动态代理、反射性能与安全)
  • 异常体系(Checked/Unchecked、全局异常处理)
  • 集合框架(List/Set/Map 实现原理、线程安全集合)
  • I/O 与 NIO(BIO/NIO/AIO、零拷贝、内存映射)
  • Stream 与 Lambda(函数式接口、流操作、Optional)
  • 时间与日期(java.time、时区处理、格式化)

1.2 并发编程

  • 并发基础(并发 vs 并行、进程 vs 线程、线程生命周期、上下文切换开销)
  • Java 内存模型 JMM(happens-before 六大规则、原子性/可见性/有序性、指令重排序与内存屏障)
  • volatile(可见性保证、禁止指令重排序、双重校验锁 DCL)
  • synchronized(Monitor 锁原理、锁升级路径:偏向锁→轻量级锁→重量级锁、锁消除/锁粗化、wait/notify)
  • CAS 与原子类(乐观锁机制、ABA 问题与解决方案 AtomicStampedReference、AtomicInteger/LongAdder 选型)
  • Lock 体系(ReentrantLock 公平/非公平锁、AQS 原理、Condition 条件队列、读写锁 ReentrantReadWriteLock)
  • 线程池(ThreadPoolExecutor 七大核心参数、内置线程池 Fixed/Cached/Single/Scheduled、拒绝策略四种、参数调优公式、ThreadPoolExecutor 执行流程)
  • 并发工具类(CountDownLatch vs CyclicBarrier 区别、Semaphore 限流、Exchanger)
  • 并发集合(ConcurrentHashMap JDK7 分段锁 vs JDK8 CAS+synchronized、CopyOnWriteArrayList 写时复制、ConcurrentLinkedQueue)
  • ThreadLocal(ThreadLocalMap 结构、内存泄漏原因与解决 remove()、InheritableThreadLocal 与 TransmittableThreadLocal)
  • Future/CompletableFuture(异步编排、链式调用 thenApply/thenCombine/thenAccept、异常处理 exceptionally)
  • Fork/Join 框架(工作窃取算法、RecursiveTask/RecursiveAction)

1.3 JVM 基础

  • JVM 内存模型(堆/栈/方法区/程序计数器/本地方法栈)
  • 类加载机制(双亲委派、破坏双亲委派、SPI 机制)
  • 垃圾回收(标记-清除/复制/标记-整理、G1/ZGC/Shenandoah)
  • JVM 参数调优(堆大小、GC 选择、GC 日志)
  • 字节码基础(javap、ASM 入门)

1.4 构建与依赖

  • Maven(坐标、依赖传递、scope、排除冲突)
  • Gradle(Groovy/Kotlin DSL、增量构建)
  • 依赖冲突解决(mvn dependency:tree、Maven Helper)
  • 多模块项目结构(父子模块、BOM、统一版本管理)
  • 私服(Nexus/Harbor、Snapshot vs Release)

1.5 项目结构

  • 分层架构(Controller/Service/Repository/Domain/Infrastructure)
  • 包命名规范与约定
  • 配置管理(application.yml、多环境 profile、配置优先级)
  • 启动流程(SpringApplication 启动、Context 刷新、Bean 生命周期)
  • 项目模板(Spring Initializr、项目脚手架)

1.6 Git 与协作

  • 分支策略(Git Flow / GitHub Flow / Trunk Based)
  • Commit 规范(Conventional Commits)
  • Code Review 流程
  • PR/MR 操作与合并策略(squash/rebase/merge)

1.7 开发环境

  • JDK 版本管理(SDKMAN、多 JDK 切换)
  • IDE 效率(断点调试、条件断点、Live Templates、插件)
  • API 调试工具(Postman/Apifox、curl、HTTP 文件)
  • 本地环境(Docker Compose 编排中间件)

1.8 代码规范

  • 编码规范(阿里巴巴 Java 开发手册、Google Java Style)
  • 静态检查(Checkstyle、SpotBugs、PMD)
  • 代码质量平台(SonarQube、代码覆盖率 JaCoCo)
  • 代码格式化(EditorConfig、IDEA 代码模板)

1.9 测试

  • 单元测试(JUnit5、断言、参数化测试、@BeforeEach/@AfterEach)
  • Mock 框架(Mockito、@Mock/@InjectMocks、verify)
  • Spring Boot 测试(@SpringBootTest、@WebMvcTest、@DataJpaTest)
  • 集成测试(Testcontainers、H2 内存数据库)
  • TDD 与测试覆盖率

二、业务开发

功能做得对、写得规范、安全不出事,这是基本功里的基本功。

2.1 Spring Boot

  • 自动配置原理(@EnableAutoConfiguration、spring.factories)
  • 起步依赖与版本管理
  • Bean 管理(@Component/@Service/@Repository、@Configuration、@Bean)
  • 条件注解(@Conditional、@Profile)
  • 外部化配置(@Value、@ConfigurationProperties、属性绑定)
  • 内嵌容器(Tomcat/Jetty/Undertow 配置与切换)
  • 拦截器与过滤器(Filter/Interceptor/AOP、执行顺序)
  • 事件机制(ApplicationEvent、@EventListener、异步事件)
  • 全局异常处理(@ControllerAdvice、ErrorController)
  • 参数校验(JSR-303、@Valid/@Validated、自定义校验器、分组校验)

2.2 Spring MVC

  • 核心组件(DispatcherServlet、HandlerMapping、HandlerAdapter、ViewResolver)
  • 请求映射(@RequestMapping、REST 风格 URL)
  • 参数绑定(@RequestParam/@PathVariable/@RequestBody、类型转换)
  • 数据响应(@ResponseBody、HttpMessageConverter、内容协商)
  • 文件上传(MultipartFile、分片上传、进度监听)
  • 跨域处理(@CrossOrigin、CorsFilter)

2.3 API 设计

  • RESTful 设计规范(资源命名、HTTP 方法语义)
  • 响应结构统一封装(code/message/data/requestId)
  • 分页设计(offset vs cursor、HATEOAS)
  • 版本控制(URL 路径 / 请求头 / 查询参数)
  • 幂等性设计(唯一键、token 机制)
  • 序列化格式选型(JSON/Protobuf/MessagePack)
  • 接口文档(Swagger/OpenAPI、Knife4j、SpringDoc)

2.4 数据库原理

  • MySQL 架构(连接器→分析器→优化器→执行器→存储引擎)
  • 存储引擎对比(InnoDB vs MyISAM、InnoDB 关键特性)
  • 索引原理(B+Tree 结构与优势、聚簇索引 vs 非聚簇索引/二级索引、覆盖索引减少回表、最左前缀原则、索引下推 ICP)
  • 索引优化(Explain 执行计划解读:type/key/rows/Extra、索引失效场景:函数操作/隐式转换/左模糊/OR 条件、索引设计建议:区分度/联合索引顺序/避免过度索引)
  • 锁机制(全局锁/表级锁/行锁、共享锁 vs 排他锁、意向锁 IS/IX 作用、行锁三算法:Record Lock 记录锁/Gap Lock 间隙锁/Next-Key Lock 临键锁)
  • MVCC 多版本并发控制(隐藏字段 DB_TRX_ID+DB_ROLL_PTR、ReadView 生成 RC 每次 vs RR 首次、undo log 版本链、解决读写互斥)
  • 事务(ACID 实现机制、四种隔离级别与实现:读未提交/读已提交/可重复读/串行化、脏读/不可重复读/幻读/丢失更新)
  • 三大日志(redo log 持久性+崩溃恢复、undo log 原子性+MVCC、binlog 主从复制+数据恢复、两阶段提交保证一致性)
  • SQL 优化(慢查询定位与日志分析、SQL 改写原则、表结构优化、架构优化:读写分离/分库分表/缓存)
  • 配置调优(内存参数 innodb_buffer_pool_size、连接池、刷盘策略)

2.5 数据访问框架

  • MyBatis/MyBatis-Plus(XML 映射、动态 SQL、#{} vs ${} 防注入、分页插件、代码生成器)
  • JPA/Spring Data JPA(实体映射、关联关系、方法命名查询、JPQL)
  • MyBatis vs JPA 选型(灵活性与便捷性权衡)
  • 事务管理(@Transactional、传播行为 7 种、隔离级别、事务失效场景)
  • 连接池(HikariCP、Druid、连接池参数调优)
  • 多数据源(dynamic-datasource、读写分离路由)
  • 数据库版本管理(Flyway/Liquibase)

2.6 认证与授权

  • 认证 vs 授权概念区分
  • Session-Cookie 机制(SameSite、HttpOnly、Secure)
  • JWT(结构、签名算法、无状态认证、Token 刷新与黑名单)
  • OAuth2.0(授权码模式、PKCE、Client Credentials)
  • Spring Security(过滤器链、SecurityContext、认证流程)
  • RBAC/ABAC 权限模型
  • 接口鉴权(注解权限、动态权限)
  • Sa-Token(轻量级认证授权框架、注解鉴权、多端统一登录、Token 二级缓存、与 Spring Security 对比选型)

2.7 安全防护

  • SQL 注入(预编译、参数化查询)
  • XSS(输出编码、CSP 头)
  • CSRF(Token 校验、SameSite)
  • SSRF(URL 白名单、协议限制)
  • 文件上传安全(类型校验、大小限制、病毒扫描)
  • 敏感信息脱敏(日志脱敏、响应脱敏、数据脱敏)
  • 密码存储(bcrypt/argon2、加盐)
  • HTTPS 配置(证书、TLS 版本、HSTS)

2.8 业务通用能力

  • 数据校验(业务规则校验、Assert 模式)
  • 状态机设计(订单/流程状态流转)
  • 分布式 ID 生成(雪花算法、号段模式、美团 Leaf)
  • Excel 导入导出(EasyExcel、大数据量分批写)
  • 国际化(i18n、MessageSource、时区)
  • 邮件/短信/推送集成

2.9 文件与对象存储

  • 文件上传(前端直传 vs 服务端中转、分片上传、断点续传、秒传)
  • 对象存储(OSS/COS/MinIO、S3 兼容、Bucket 权限、STS 临时凭证)
  • 图片处理(缩略图、水印、格式转换 WebP/AVIF)
  • CDN 加速(回源策略、缓存刷新与预热、防盗链与 URL 鉴权)

2.10 实时通信

  • WebSocket(握手机制、心跳保活、STOMP 协议、Spring WebSocket 集成)
  • SSE 服务端推送(单向流式传输、断线重连)
  • 消息推送(站内信、App Push 集成)

三、中间件集成

项目流量上来之后,需要引入外部组件增强系统能力。

3.1 缓存 — Redis

  • 数据类型(String/List/Hash/Set/ZSet/Bitmap/HyperLogLog/Stream)
  • 应用场景(缓存、分布式锁、计数器、排行榜、延迟队列、布隆过滤器)
  • 缓存策略(Cache-Aside、Read-Through、Write-Through、Write-Behind)
  • 多级缓存架构(本地 Caffeine + 远程 Redis)
  • 缓存穿透(布隆过滤器、缓存空值)
  • 缓存击穿(互斥锁、逻辑过期)
  • 缓存雪崩(过期时间随机化、多级缓存、熔断)
  • 缓存一致性(先更新 DB 后删缓存、延迟双删、订阅 Binlog)
  • 分布式锁(SETNX、Redisson、看门狗、红锁)
  • Redis 集群(主从复制、哨兵模式、Cluster 分片、哈希槽)
  • 持久化(RDB vs AOF、混合持久化)
  • 内存淘汰策略(LRU/LFU/TTL)
  • 大 Key 与热 Key 处理

3.2 消息队列 — RabbitMQ / RocketMQ / Kafka

  • 消息队列的价值(解耦、削峰、异步、最终一致性)
  • RabbitMQ(Exchange/Queue/Binding 路由模型、五种工作模式、死信队列/延迟队列/优先级队列、镜像队列高可用、Erlang 语言特性)
  • RocketMQ 架构(NameServer、Broker、Topic、Queue、Consumer Group)
  • Kafka 架构(Broker、Partition、Consumer Group、Controller)
  • 消息类型(普通消息、顺序消息、延迟消息、事务消息)
  • 消费模式(集群消费 vs 广播消费、Pull vs Push)
  • 消息可靠性(同步/异步刷盘、ACK 机制、重试队列、死信队列)
  • 消息幂等(数据库唯一键、Redis 去重、业务状态机)
  • 消息堆积处理(扩容 Consumer、降级非核心消费、积压监控)
  • 消息顺序性(分区有序、全局有序)
  • 消息追踪与回溯
  • RabbitMQ vs RocketMQ vs Kafka 选型(低延迟/高吞吐/大数据场景取舍)

3.3 搜索引擎 — Elasticsearch

  • 倒排索引原理
  • 分词器(IK 分词、拼音分词、自定义词典)
  • Mapping(字段类型、动态映射、索引模板)
  • 查询(match/term/bool/range/聚合/高亮)
  • 分页(from+size、scroll、search_after)
  • 索引生命周期管理(rollover、冷热分离)
  • 写入优化(bulk、refresh_interval、translog)
  • Spring Data Elasticsearch 集成

3.4 定时任务与异步处理

  • Spring Task(@Scheduled、fixedDelay vs fixedRate)
  • 异步方法(@Async、线程池配置、异步结果 Future/CompletableFuture)
  • 线程池(ThreadPoolExecutor 参数、拒绝策略、动态调整)
  • 分布式调度(XXL-JOB、Elastic-Job、PowerJob)
  • 异步任务可靠性(持久化、重试、回调、补偿)

3.5 数据库中间件

  • ShardingSphere-JDBC(客户端模式、分片策略、读写分离、分布式主键、数据脱敏)
  • ShardingSphere-Proxy / MyCat(代理模式、跨分片 JOIN、透明接入)

3.6 数据同步

  • Canal(MySQL Binlog 订阅、数据同步、缓存一致性)
  • Debezium(CDC 变更捕获、Kafka Connect)
  • Flink CDC(实时数据同步、流式处理)

3.7 分布式协调 — ZooKeeper

  • 核心定位(CP 模型分布式协调中枢、ZAB 原子广播协议)
  • 集群角色(Leader 唯一写入口、Follower 参与投票、Observer 水平扩展读能力)
  • 数据模型(ZNode 树形命名空间、持久/临时/顺序节点)
  • Watch 机制(事件监听、一次性触发、通知状态不通知数据)
  • 典型应用场景(分布式锁、服务注册与发现、配置中心、集群选举、分布式队列)
  • 分布式锁实现(临时顺序节点 + Watch 机制、Curator 框架)
  • 集群部署(奇数台推荐、过半 Quorum 写入)
  • ZooKeeper vs Nacos vs Etcd

3.8 网络通信 — Netty

  • 核心定位(基于 NIO 的异步事件驱动网络框架,Reactor 模型实现)
  • 线程模型(主从 Reactor 多线程:BossGroup 接收连接 + WorkerGroup 处理 IO)
  • 核心组件(Channel 连接抽象、EventLoop 线程绑定、ChannelPipeline 责任链、ChannelHandler 业务处理、ByteBuf 零拷贝缓冲)
  • Pipeline 事件传播(Inbound 入站 vs Outbound 出站、Handler 执行顺序)
  • TCP 粘包/拆包(原因:Nagle 算法/MTU 限制/接收缓冲区、解决方案:LengthFieldBasedFrameDecoder 等内置解码器)
  • 通信可靠性保障(心跳探测 IdleStateHandler、断线重连、高水位写保护、优雅关闭)
  • ByteBuf 内存管理(池化 Pooled vs 非池化 Unpooled、堆内 Heap vs 堆外 Direct、引用计数释放)
  • 设计模式应用(责任链 Pipeline、观察者 ChannelFuture、工厂 ChannelFactory、策略 EventExecutorChooser)
  • 典型应用场景(RPC 框架 Dubbo、消息中间件 RocketMQ、API 网关 Spring Cloud Gateway、即时通讯、ZooKeeper 通信层)

3.9 NoSQL 数据库

NoSQL 经典四大类:键值型、文档型、列族型、图数据库,外加时序等延伸类型。

  • 键值型 — Redis(String/Hash/List/Set/ZSet 丰富数据结构、内存读写亚毫秒延迟、持久化与集群方案、详见 3.1)

  • 文档型 — MongoDB(BSON 格式、集合/文档模型、嵌入 vs 引用数据设计、聚合管道 $match/$group/$lookup、副本集自动故障转移、分片集群 Shard Key 均衡、Spring Data MongoDB 集成、适用场景:内容管理/用户画像/物联网数据)

  • 文档型 — MongoDB(BSON 格式、集合/文档模型、嵌入 vs 引用数据设计、聚合管道 $match/$group/$lookup、副本集自动故障转移、分片集群 Shard Key 均衡、Spring Data MongoDB 集成、适用场景:内容管理/用户画像/物联网数据)

  • 列族型 — HBase / Cassandra(宽表存储、LSM Tree 写入优化、HBase 基于 HDFS + RegionServer 架构、Cassandra 去中心化 P2P + 最终一致性可调、适用场景:海量日志/时序数据/风控特征存储)

  • 图数据库 — Neo4j / NebulaGraph(节点+关系+属性模型、Cypher 查询语言/nGQL、遍历算法:最短路径/PageRank/社区发现、适用场景:社交关系/知识图谱/反欺诈/推荐系统)

  • 时序数据库 — InfluxDB / TimescaleDB / TDengine(时间戳为索引核心、自动降采样与数据保留策略、连续聚合/预计算、适用场景:IoT 监控/APM 指标/金融 K 线/运维监控)

  • 向量数据库 — Milvus / Weaviate / Qdrant(高维向量存储与 ANN 近似最近邻搜索、HNSW/IVF 索引算法、相似度度量:余弦/L2/内积、适用场景:RAG 语义检索/多模态搜索/推荐系统/图搜图、传统数据库向量扩展:pgvector/Redis Vector Search/MongoDB Atlas Vector Search)

  • NoSQL 选型决策(数据结构形态 + 查询模式 + 一致性需求 + 运维成本综合评估)

四、服务架构与服务治理

单体拆成微服务之后,服务之间怎么协作、怎么容错、怎么保证不炸。

4.1 架构基础

  • 单体→微服务演进路线
  • 微服务拆分原则(DDD 限界上下文、按业务能力拆分)
  • 分布式基础理论(CAP、BASE、一致性模型)
  • 架构模式对比(分层架构、六边形架构、整洁架构、CQRS)
  • DDD 领域驱动设计(战略设计:限界上下文/通用语言/上下文映射、战术设计:实体/值对象/聚合根/领域服务/领域事件/仓储、防腐层/开放主机服务、传统分层 vs DDD 四层架构:接口层/应用层/领域层/基础设施层、事件风暴协作建模)

4.2 注册中心 — Nacos

  • 服务注册与发现(临时实例 vs 持久化实例)
  • Nacos CAP 模式(AP/CP 切换)
  • 健康检查(心跳机制、保护阈值)
  • 元数据与权重管理
  • Nacos vs Eureka vs Consul vs Zookeeper

4.3 配置中心 — Nacos

  • 配置管理(Data ID、Group、Namespace、配置继承)
  • 动态刷新(@RefreshScope、@Value 刷新、自定义刷新)
  • 配置版本与回滚
  • 配置灰度发布

4.4 远程调用 — OpenFeign

  • 声明式 HTTP 调用(@FeignClient、契约定义)
  • 超时与重试(连接超时、读取超时、重试策略)
  • 拦截器(请求头传递、Token 透传、日志)
  • 负载均衡集成(Spring Cloud LoadBalancer)
  • 熔断降级集成(Sentinel/Resilience4j)
  • RPC vs HTTP 选型(OpenFeign vs Dubbo vs gRPC)
  • Dubbo(服务治理型 RPC、协议选择、注册中心、负载均衡、泛化调用)

4.5 流量治理

  • 负载均衡(轮询/加权/最少连接/一致性哈希)
  • 限流(令牌桶、漏桶、滑动窗口、Sentinel 规则、热点参数限流)
  • 熔断(慢调用比例、异常比例、异常数、半开状态探测)
  • 降级(RT 降级、异常比例降级、自定义降级逻辑)
  • 流量染色(全链路灰度、标签路由)

4.6 网关

  • Nginx(反向代理、负载均衡、静态资源、HTTPS、WAF)
  • 网关层级:Nginx(边缘)→ Gateway/Kong/APISIX(应用层)
  • 路由(Route/Predicate/Filter、动态路由、服务发现路由)
  • 过滤器(GatewayFilter、GlobalFilter、自定义过滤器)
  • 跨域配置
  • 网关层限流
  • 网关层鉴权
  • Spring Cloud Gateway vs Zuul vs Kong vs APISIX vs Nginx

4.7 分布式事务

  • 刚性事务 vs 柔性事务
  • 两阶段提交(2PC/XA)
  • TCC(Try-Confirm-Cancel)
  • Saga(编排/控制、向前恢复/向后补偿)
  • 可靠消息最终一致性(本地消息表、RocketMQ 事务消息)
  • 最大努力通知
  • Seata(AT 模式、全局锁、回滚日志)

4.8 部署与容器化

  • Docker(镜像构建、Dockerfile 最佳实践、多阶段构建、镜像瘦身)
  • Docker Compose(本地编排多服务)
  • Kubernetes(Pod/Deployment/Service/ConfigMap/Secret/Ingress/HPA)
  • CI/CD(Jenkins/GitHub Actions、构建/测试/部署流水线)
  • 蓝绿发布 / 滚动发布 / 金丝雀发布
  • 优雅上下线(preStop、readiness/liveness 探针)
  • ServiceMesh 服务网格(治理能力下沉到 Sidecar、Istio + Envoy 架构、控制面 istiod + 数据面 Envoy、mTLS 零信任安全、流量路由 VirtualService/DestinationRule、vs Spring Cloud 治理体系对比、适用场景与迁移策略)

五、可观测性

系统出问题不可怕,可怕的是不知道哪里出问题。

5.1 日志

  • 日志框架(SLF4J、Logback、Log4j2)
  • 日志规范(级别、格式、分类、脱敏)
  • 日志配置(异步日志、滚动策略、按天/大小切割)
  • MDC 与全链路 traceId 透传
  • ELK(Filebeat→Logstash→Elasticsearch→Kibana,索引生命周期)
  • 日志查询与告警(Kibana/OpenSearch 查询语法)

5.2 指标监控

  • 黄金指标(延迟、流量、错误、饱和度)
  • Spring Boot Actuator(health/info/metrics/env、自定义端点)
  • Micrometer 指标埋点
  • Prometheus(数据模型、PromQL、Alertmanager)
  • Grafana(Dashboard、面板、变量、告警)
  • JVM 监控(堆内存、GC、线程数、CPU、JVM 监控面板)

5.3 链路追踪

  • 核心概念(Trace/Span/Context Propagation)
  • 采样策略(固定采样、自适应采样)
  • SkyWalking(Java Agent 无侵入、服务拓扑、性能剖析)
  • Jaeger + OpenTelemetry
  • 追踪与日志关联(traceId 注入日志)

5.4 告警

  • 告警分级(P0/P1/P2/P3)
  • 告警规则(阈值、频率、静默、降噪)
  • 告警渠道(企业微信/钉钉/飞书/邮件/短信/电话)
  • On-call 排班与事故响应流程
  • 告警复盘与持续优化

5.5 排障工具

  • Arthas(在线诊断、watch/trace/thread/vmoption)
  • JVM 问题排查(内存泄漏 MAT/HeapHero、CPU 高排查、死锁)
  • GC 日志分析(GCeasy)
  • 线上 HTTP 请求排查
  • 慢 SQL 分析与优化

六、系统设计

把前面五个域全部串起来,做一个完整的方案推演。

6.1 设计方法

  • 系统设计四步法(需求澄清→容量估算→架构设计→深入优化)
  • 需求澄清(功能需求、非功能需求、约束边界)
  • 容量估算(DAU、QPS、存储、带宽、信封背面计算)
  • 架构权衡(一致性 vs 可用性、性能 vs 成本、CAP 取舍)

6.2 高频设计模式

  • 缓存模式(Cache-Aside、Read/Write-Through、Write-Behind)
  • 分库分表(垂直拆分、水平拆分、ShardingKey 选择、扩容方案)
  • 消息队列解耦
  • CDN 加速
  • 读写分离
  • 异步处理与最终一致性

6.3 经典案例

  • 短链系统(唯一键生成、301/302 重定向、过期与防滥用)
  • 秒杀系统(库存扣减、限流、排队、幂等、防刷、最终一致性)
  • Feed 流(推模式/拉模式/推拉结合、时间线、热点用户、分页)
  • IM 系统(长连接、消息可靠性、离线推送、已读回执、多端同步)
  • 分布式 ID 生成器(雪花算法、号段模式、时钟回拨)
  • 分布式限流器
  • 计数系统(点赞/阅读计数、高并发写入、异步合并)
  • API 限流系统
  • 规则引擎系统(Drools/Easy Rules/QLExpress 对比、RETE 算法简介、规则热更新与冲突处理、与业务代码解耦策略)
  • BPM 流程开发(Activiti/Flowable/Camunda 引擎对比、BPMN 2.0 流程定义、中国特色功能:驳回/会签/加签/撤回/委派、流程版本管理与灰度升级)

6.4 数据系统设计

  • 数据库选型(关系型 vs 文档型 vs 列存 vs 时序 vs 图)
  • 分库分表方案设计
  • 数据迁移与双写方案
  • 冷热数据分离

能力进阶路线

计算机基础 ──→ 项目工程化 ──→ 业务开发 ──→ 中间件集成 ──→ 服务治理 ──→ 系统设计
   │               │              │             │             │             │
   │               │              │             │             │             └── 综合运用,方案推演
   │               │              │             │             └── 微服务、分布式、容器化
   │               │              │             └── Redis/MQ/ES 引入与调优
   │               │              └── 写接口、连数据库、做认证
   │               └── 搭项目骨架、配环境、管依赖、管并发
   └── 操作系统、网络、设计模式基石

                    可观测性 ← ─ ─ ─  贯穿全流程  ─ ─ ─ →