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

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

相关推荐
国医中兴2 小时前
边缘计算中的存储挑战与解决方案
微服务·云原生·容器·kubernetes·k8s
迷藏4942 小时前
# 发散创新:用Locust实现高并发场景下的精准压力测试实战在现代微服务架构中,**系统稳定性与性能瓶颈的识别能力直接决定了产品上线后
java·python·微服务·架构·压力测试
会飞的大可3 小时前
Docker Compose 多服务编排实战:从零搭建微服务架构
docker·微服务·架构
国医中兴1 天前
分布式存储的缓存优化:从理论到实践
微服务·云原生·容器·kubernetes·k8s
无忧智库1 天前
从单体到云原生:解构大型供应链系统的微服务演进与多租户治理之道(PPT)
微服务·云原生·架构
indexsunny1 天前
互联网大厂Java求职面试实战:微服务与Spring生态全攻略
java·数据库·spring boot·安全·微服务·面试·消息队列
赵丙双2 天前
多网卡微服务注册 IP/host 问题
微服务·eureka·nacos·consul·多网卡