微服务-进阶与底层原理学习备忘录

进阶与底层原理学习备忘录 (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 模块中的数据脱敏注解 @SensitiveSensitiveJsonSerializer

  • 深度学习目标

    • 理解 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 事务消息的最终一致性方案。

相关推荐
_codemonster5 小时前
30分钟快速搭建 Spring Cloud Alibaba 微服务实战(一)
微服务·架构·毕业设计·课程设计
Dongwoo Jeong8 小时前
微服务架构(MSA)是如何诞生的?
微服务·云原生·架构
半旧夜夏8 小时前
【保姆级】微服务组件环境搭建(Docker Compose版)
java·linux·spring cloud·微服务·云原生·容器
西凉的悲伤16 小时前
Spring Boot 、Spring Cloud 微服务架构认证授权方案
spring boot·spring cloud·微服务·架构·认证授权
苏渡苇17 小时前
Seata 番外篇:使用 docker-compose 部署 Seata Server(TC)及 K8S 部署 Seata 高可用
spring boot·docker·微服务·容器·kubernetes·seata·springcloud
RingWu18 小时前
高并发三板斧-异步
分布式·微服务·架构
雨辰AI1 天前
SpringBoot3 整合达梦 DM9 超详细入门实战|从零搭建可直接上线
数据库·微服务·架构·政务
Regentsoft丽晶软件3 天前
传统单体架构拖垮分销效率:2026品牌分销系统微服务化升级的价值拆解
微服务·云原生·架构
逻极3 天前
Go 从入门到精通:并发编程与云原生实践
微服务·云原生·go·并发
苏渡苇3 天前
强强联合:OpenFeign 整合 Sentinel
spring boot·spring cloud·微服务·sentinel·openfeign