🗄️MySQL → Redis 因果链
因为数据量增长→所以索引优化→因为并发增长→所以读写分离→因为主从延迟→所以缓存→因为穿透击穿雪崩→所以布隆/互斥锁/随机过期→因为一致性→所以延迟双删/Canal→因为单库装不下→所以分库分表→因为跨库事务→所以分布式事务
索引因果读写分离主从延迟缓存引入穿透击穿雪崩缓存一致性分库分表分布式事务
🍃Spring 生态因果链
因为手动new耦合→所以IoC→因为Bean有依赖→所以DI→因为横切关注点重复→所以AOP动态代理→因为AOP能拦截→所以@Transactional→因为配置太多→所以自动装配→因为通用功能重复→所以Starter→因为循环依赖→所以三级缓存
IoCDIAOP@Transactional失效自动装配Starter循环依赖Bean生命周期
🔀Java 并发因果链
因为串行效率低→所以多线程→因为共享变量不可见→所以volatile→因为竞态条件→所以synchronized→因为锁不够灵活→所以Lock/读写锁/StampedLock→因为线程创建开销→所以线程池→因为阻塞等待→所以CompletableFuture→因为变量隔离→所以ThreadLocal
volatilesynchronized锁升级ReentrantLock线程池CompletableFutureThreadLocalJMM
🏗️微服务因果链
因为单体太大→所以拆分→因为地址硬编码→所以注册发现→因为没有统一入口→所以网关→因为故障级联→所以熔断降级→因为调用链复杂→所以链路追踪→因为配置散落→所以配置中心
服务拆分NacosGatewaySentinelSleuth配置中心
📨消息队列因果链
因为同步阻塞→所以MQ→因为消息丢失→所以确认+持久化→因为消息重复→所以幂等→因为顺序要求→所以顺序消费→因为消费失败→所以死信队列→因为有延迟需求→所以延迟队列→因为积压→所以扩容应急
异步解耦消息丢失幂等顺序消费死信队列延迟队列积压
🌐分布式系统因果链
因为单机瓶颈→所以分布式→因为网络不可靠→所以CAP→因为CAP选AP→所以BASE→因为跨库事务→所以2PC/TCC/Saga/Seata→因为互斥→所以分布式锁→因为ID冲突→所以雪花算法
CAPBASE分布式事务分布式锁雪花算法