进阶与底层原理学习备忘录 (Deep Dive Backlog)
文档说明 : 本文档用于记录在分析 RuoYi-Cloud 源码过程中,遇到的所有值得深入探究的底层原理 和高阶技术点 。 学习策略:先掌握源码层面的业务流转、框架配置和基本用法,待对整个微服务架构有了全面且清晰的认知后,再回过头来根据此清单进行专项的"降维打击"与深度学习。
一、 流量网关层 (Spring Cloud Gateway)
1. 响应式编程 (Reactive Programming)
-
关联源码/场景 :Gateway 中随处可见的
Mono<T>和Flux<T>,以及全局异常处理WebExceptionHandler。 -
深度学习目标:
-
理解什么是异步非阻塞数据流?
-
对比传统 Spring MVC(Servlet 阻塞模型)与 Spring WebFlux(Reactor 非阻塞模型)的区别。
-
掌握 Reactor 核心 API:
map,flatMap,filter,subscribe的工作机制。
-
2. Netty 网络编程基础
-
关联源码/场景:Spring Cloud Gateway 的底层 HTTP 服务器和客户端都是基于 Netty 实现的。
-
深度学习目标:
-
理解 Netty 的 Reactor 线程模型(BossGroup 与 WorkerGroup)。
-
了解 Netty 为什么能处理超高并发(NIO, 零拷贝, ByteBuf)。
-
网关是如何利用 Netty 实现请求的高效转发而不阻塞线程的?
-
二、 流量防卫与容错层 (Sentinel)
1. 熔断与限流的底层算法机制
-
关联源码/场景 :网关的
sentinel-ruoyi-gateway规则配置及SentinelFallbackHandler。 -
深度学习目标:
-
限流算法 :手写或深入理解令牌桶算法 (Token Bucket) 、漏桶算法 (Leaky Bucket) 以及滑动时间窗口算法的实现原理。
-
Sentinel 核心机制 :了解 Sentinel 是如何基于插槽链 (Slot Chain) 架构,通过各种 Slot(如 NodeSelectorSlot, StatisticSlot, FlowSlot)来统计请求 QPS 并实施拦截的。
-
三、 Spring 核心基础与 AOP (Aspect-Oriented Programming)
1. Spring AOP 底层原理与动态代理
-
关联源码/场景 :
ruoyi-common-datascope(数据权限)、ruoyi-common-security(功能权限)、ruoyi-common-log(全局日志) 中大量使用的@Aspect切面。 -
深度学习目标:
-
彻底理解 JDK 动态代理 与 CGLIB 动态代理 的区别及触发条件。
-
掌握 AOP 核心概念:切点 (Pointcut)、切面 (Aspect)、通知 (Advice:
@Before,@After,@Around)。 -
理解
@Around(环绕通知) 中ProceedingJoinPoint.proceed()的控制流转机制,以及如何修改入参和出参。
-
四、 JSON 序列化与反序列化机制
1. Jackson 序列化框架的高阶应用
-
关联源码/场景 :
ruoyi-common-sensitive模块中的数据脱敏注解@Sensitive及SensitiveJsonSerializer。 -
深度学习目标:
-
理解 Spring MVC 中
HttpMessageConverter是如何与 Jackson 结合,将 Java 对象转换为 HTTP 响应流的。 -
掌握自定义序列化器 (
JsonSerializer) 和反序列化器 (JsonDeserializer) 的编写。 -
理解
ContextualSerializer(上下文序列化器) 的作用:如何在序列化时动态读取字段上的自定义注解(如读取脱敏类型)。
-
五、 Java 并发编程与上下文管理
1. ThreadLocal 与多线程上下文透传
-
关联源码/场景 :微服务内部跨组件调用时的身份识别,以及
SecurityContextHolder中对阿里TransmittableThreadLocal的使用。 -
深度学习目标:
-
理解原生
java.lang.ThreadLocal的内存模型 (ThreadLocalMap) 及内存泄漏的防范 (remove()的必要性)。 -
理解
InheritableThreadLocal(ITL) 在线程池环境下的失效原因。 -
深入探究阿里
TransmittableThreadLocal(TTL) 的抓取 (Capture)、回放 (Replay)、复原 (Restore) 机制机制。
-
六、 分布式事务底层机制 (Seata)
1. Seata AT 模式底层深挖与隔离级别
-
关联源码/场景 :微服务跨库调用的
@GlobalTransactional注解,以及数据库中的undo_log表。 -
深度学习目标:
-
脏读与脏写问题 :在 AT 模式一阶段提交本地事务后、二阶段全局提交前,其他本地事务修改了同一行数据怎么办?深入理解 Seata 的全局锁 (Global Lock) 机制是如何防止脏写的。
-
undo_log格式与生成:Seata 数据源代理是如何解析业务 SQL,并生成前后置镜像(Before Image / After Image)的? -
事务隔离级别 :理解 Seata AT 模式默认的隔离级别(读未提交),以及如何通过
SELECT ... FOR UPDATE实现读已提交(结合全局锁)。
-
2. 其他分布式事务模型 (TCC / SAGA / XA)
-
深度学习目标:
-
TCC 模式 (Try-Confirm-Cancel):理解无锁化的高性能分布式事务原理,以及如何解决"空回滚"、"防悬挂"、"幂等性"三大难题。
-
可靠消息最终一致性:了解基于 RocketMQ 事务消息的最终一致性方案。
-