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

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

相关推荐
晚安code6 小时前
RPC 到底是什么:微服务内部调用的首选,以及它藏起来的三个坑
微服务·rpc
晚安code6 小时前
微服务架构和单体架构的区别:拆之前你得先想清楚这件事
微服务·架构
code_slave(码畜)1 天前
微服务架构落地:基础服务 —— 报表服务(中篇:元数据、查询引擎、缓存与权限落地)
spring boot·spring cloud·缓存·微服务·架构
code_slave(码畜)1 天前
微服务架构落地:基础服务 —— 报表服务(AI 集成篇:AI 增强报表能力)
人工智能·spring boot·spring cloud·微服务·架构
code_slave(码畜)1 天前
微服务架构落地:公共中间件层总览——不承载业务,只承载稳定性
spring boot·spring cloud·微服务·中间件·架构
code_slave(码畜)1 天前
微服务架构落地:基础服务 —— 报表服务(上篇:定位、边界与整体架构)
java·spring boot·spring cloud·微服务·架构
贾斯汀frank2 天前
Spring Boot + K8s + Istio 与 Spring Cloud:微服务治理能力对比
spring cloud·微服务·istio
自强的小白2 天前
微服务之间的依赖传递和调用(实体类的模块传递以及负载均衡的调用!)注册中心
java·微服务
Thomas.Sir3 天前
第11课:Nacos 多环境、多服务配置隔离 & 配置优先级详解
spring cloud·微服务·nacos