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 引入与调优
│ │ └── 写接口、连数据库、做认证
│ └── 搭项目骨架、配环境、管依赖、管并发
└── 操作系统、网络、设计模式基石
可观测性 ← ─ ─ ─ 贯穿全流程 ─ ─ ─ →