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

进阶与底层原理学习备忘录 (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 事务消息的最终一致性方案。

相关推荐
米丘3 天前
微前端之 Web Components 完全指南
微服务·html
霸道流氓气质5 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
霸道流氓气质6 天前
Spring Boot 微服务性能优化完全指南
spring boot·微服务·性能优化
地瓜伯伯6 天前
从MESI缓存一致性协议讲透synchronized的底层
java·spring boot·spring·spring cloud·微服务·springcloud
Devin~Y6 天前
大厂 Java 面试实录:从音视频内容社区到 AI RAG 的全链路技术设计
java·spring boot·redis·spring cloud·微服务·kafka·音视频
递归尽头是星辰6 天前
AI 访问数据仓库:从直连到微服务化
数据仓库·人工智能·微服务·dataagent·ai数据治理
就改了6 天前
Windows 环境 SkyWalking 完整实操教程
windows·微服务·skywalking
至乐活着7 天前
Docker Compose多服务编排实战:从零搭建Node.js+MySQL+Redis全栈应用
docker·微服务·devops·容器编排·compose
就改了7 天前
微服务异步场景链路断裂完整解决方案
微服务·云原生·架构
山东点狮信息科技有限公司7 天前
点狮OA-企业级 OA 办公自动化系统架构设计与实践
spring cloud·微服务·性能优化·架构·系统架构