后端框架
#markmap
后端开发的核心是「如何构建可靠、高性能的服务」。从单体应用到微服务架构,从同步调用到异步消息,每一层都有成熟的技术栈支撑。
注
学习路径
SpringFramework → SpringBoot → MyBatis → SpringMVC → Swagger → JWT → SpringCloud + 消息队列 + RPC框架 → Netty + 缓存 + 可观测 + 安全
Spring 生态
Spring 是 Java 后端的事实标准框架,围绕它形成了完整的技术生态:
- Spring Framework:IoC 容器、AOP、事务管理,一切的基石
- Spring Boot:自动配置、起步依赖,让 Spring 项目开箱即用
- Spring MVC:Web 框架,处理 HTTP 请求和响应
- Spring WebFlux:响应式 Web 框架,支持非阻塞 IO
- Spring Security:认证授权框架,支持 OAuth2、JWT 等
- Spring 事务:声明式事务管理,
@Transactional注解驱动
Spring Boot 的价值
自动配置大幅降低了 Spring 的使用门槛,但理解底层原理(IoC、AOP、Bean 生命周期)仍然是排查问题和深度定制的基础。
微服务
微服务 架构将单体应用拆分为独立服务,每个服务独立开发、部署和扩展。拆分带来了灵活性,也引入了复杂性:服务发现、负载均衡、配置管理、熔断限流、分布式事务等问题需要专门的解决方案。
Spring Cloud 是 Spring 生态的微服务解决方案,集成了 Netflix 和 Alibaba 两大组件体系:
| 问题 | Netflix 方案 | Alibaba 方案 |
|---|---|---|
| 服务发现 | Eureka | Nacos |
| 负载均衡 | Ribbon | Spring Cloud LoadBalancer |
| 熔断降级 | Hystrix | Sentinel |
| 网关 | Zuul | Gateway |
| 配置中心 | Config | Nacos / Apollo |
| 分布式事务 | - | Seata |
注意
Netflix 组件已停止维护
新项目推荐 Alibaba 体系或 Spring Cloud 官方方案。
消息队列
消息队列 实现服务间的异步通信,解耦、削峰、提高系统吞吐量:
| 消息队列 | 吞吐量 | 适用场景 |
|---|---|---|
| Kafka | 百万级/秒 | 日志收集、流处理 |
| RabbitMQ | 万级/秒 | 企业级应用、复杂路由 |
| RocketMQ | 十万级/秒 | 电商、金融、事务消息 |
可靠消息方案
生产者确认 + Broker 持久化 + 消费者幂等,三个环节缺一不可。At-least-once + 幂等消费是最常用的可靠消息方案。
RPC 远程调用
RPC 让微服务间像调用本地方法一样通信:
| 框架 | 协议 | 适用场景 |
|---|---|---|
| Dubbo | TCP 自定义协议 | Java 生态高吞吐 |
| gRPC | HTTP/2 + Protobuf | 跨语言高性能 |
| OpenFeign | HTTP/REST | Spring Cloud 体系 |
Dubbo SPI 是 Dubbo 的核心扩展机制,通过 @SPI 和 @Adaptive 注解实现协议切换、序列化方式选择和负载均衡策略切换。ZooKeeper 作为分布式协调服务,常在 Dubbo 中充当注册中心。
数据持久层
MyBatis 是最常用的持久层框架,SQL 由开发者编写,适合复杂查询。MyBatis-Plus 在此基础上提供通用 CRUD 能力。核心要点:使用 #{} 防止 SQL 注入,使用 resultMap 明确映射关系,生产环境用分页插件避免内存溢出。
网络编程
网络编程 从 BIO 到 NIO 再到 Netty 的演进,本质上是为了解决高并发下线程资源浪费的问题:
- IO模型:BIO 每连接一线程,NIO 单线程多路复用,AIO 操作系统回调
- Netty:基于 NIO 的高性能框架,EventLoop 线程模型 + Pipeline 处理链
- 零拷贝:
FileChannel.transferTo()减少数据复制,Kafka、Netty 都依赖此技术
缓存
缓存 分为本地缓存和分布式缓存。Guava Cache 基于 ConcurrentHashMap 实现分段锁,支持过期、淘汰、自动加载。Redis 作为分布式缓存需要注意三个经典问题:缓存穿透(查询不存在的数据)、缓存击穿(热点 key 失效)、缓存雪崩(大量 key 同时失效)。
安全
安全 的核心是认证和授权。JWT 提供无状态 Token 机制,适合分布式架构;Shiro 轻量易上手,适合中小型项目;Spring Security 功能全面,适合企业级应用。生产环境必须使用 HTTPS,密码用 bcrypt 加盐存储。
可观测
可观测 三大支柱:Metrics(指标,Prometheus + Grafana)、Logs(日志,ELK/Loki)、Traces(链路追踪,Jaeger/Zipkin)。三者协同:Metrics 触发告警 -> Traces 定位链路 -> Logs 查看细节。新项目推荐使用 OpenTelemetry 统一采集。
实时通信
WebSocket 提供全双工通信,适合即时聊天、实时通知、股票行情等场景。STOMP 协议在 WebSocket 之上提供发布/订阅模式,Spring Boot 通过 @MessageMapping 注解简化消息处理。集群部署需要 Redis Pub/Sub 实现跨节点消息广播。
批处理
批处理 处理大规模数据集的批处理任务。Job 由多个 Step 组成,Step 内部采用 Chunk 模式:读取一批 -> 处理 -> 写入。支持 Skip/Retry 策略处理异常数据,Listener 机制监控执行过程。
API 文档
Swagger 自动生成 OpenAPI 规范的接口文档。Spring 官方推荐 SpringDoc,通过 @Tag、@Operation、@Schema 等注解描述接口。Knife4j 提供更好的文档界面。