分布式核心知识

分布式核心知识 一、分布式基础概念1. 什么是分布式把一个单体系统拆分成多个独立服务部署在不同服务器通过网络协作完成业务分担压力、提升并发与可用性。2. 单体 vs 分布式单体代码集中、部署简单高并发/大流量易瓶颈牵一发而动全身。分布式服务解耦、可弹性扩容、团队并行开发引入网络、数据一致性、调用复杂度等新问题。3. 三大理论面试必背CAP 定理分布式系统无法同时满足一致性©、可用性(A)、分区容错性§分区容错必选只能在 C 和 A 之间取舍CP保证一致性牺牲可用性如 ZooKeeperAP保证可用性牺牲强一致性如 Eureka、大部分业务系统BASE 理论对 CAP 的落地实践互联网主流方案基本可用故障时保证核心功能可用允许部分降级软状态数据允许短暂不一致最终一致性数据最终会达成一致不要求实时一致一致性算法Paxos经典强一致算法实现复杂Raft简化版 Paxos易实现主流Nacos、Etcd、RocketMQ 均使用二、分布式四大核心问题 解决方案1. 分布式会话Session 共享问题请求分发到不同服务/节点原生 Session 不互通。方案统一会话存储Redis 集中存放 Session前端 Token无状态登录JWT 主流方案粘性会话不推荐负载不均2. 分布式 ID问题单机自增 ID 无法在多节点全局唯一。常用方案UUID简单无序、过长、索引差数据库自增简单单点瓶颈雪花算法(SnowFlake)主流64位二进制有序、高性能Redis 自增适合中小型系统百度 UID、美团 Leaf开源 ID 生成器3. 分布式锁问题多服务/多节点竞争同一资源保证互斥访问。主流实现基于 Redis核心SET key value NX EX 过期时间问题死锁、锁续期、锁误删、主从同步延迟成熟框架Redisson看门狗续期、可重入、公平锁基于 ZooKeeper临时有序节点 监听性能略低于 Redis一致性更强基于数据库悲观锁/乐观锁性能差仅低并发场景使用4. 分布式事务最难考点问题跨多个服务/库保证事务要么全部成功、要么全部回滚。四大经典方案2PC两阶段提交准备阶段 → 提交/回滚强一致性能差不适合高并发。TCC补偿事务Try(检查/预留) → Confirm(确认) → Cancel(回滚)代码侵入高性能较好。本地消息表异步确保本地事务 消息表 轮询补发实现简单业界常用。SAGA 模式长事务拆分每个子事务配反向回滚操作。主流框架Seata阿里开源一站式分布式事务框架支持 AT、TCC、SAGA 等模式项目首选。三、分布式核心组件企业必用1. 注册中心服务发现作用服务注册、健康检测、地址拉取解耦服务硬编码。Nacos国内主流集注册中心配置中心动态DNS兼容 AP/CPEurekaSpringCloud 原生AP 架构已停止更新ZooKeeperCP 架构强一致适合配置/选举不建议纯服务注册2. 配置中心作用统一管理配置、动态刷新无需重启服务。Nacos / Apollo / Spring Cloud Config3. 网关 Gateway作用请求入口统一路由、限流、熔断、鉴权、日志、灰度发布。主流Spring Cloud Gateway替代旧版 Zuul4. 消息队列 MQ异步解耦、削峰填谷核心场景异步处理、流量削峰、服务解耦、数据同步。主流中间件RocketMQ阿里出品功能全事务消息优秀国内电商首选Kafka高吞吐大数据、日志收集首选RabbitMQ可靠性高社区成熟5. 熔断 限流 降级高可用三板斧问题服务雪崩下游故障层层向上传导。熔断下游异常多直接切断调用避免雪崩Sentinel、Resilience4j限流限制请求量保护服务不被打垮令牌桶、漏桶算法降级非核心功能暂时关闭保证核心业务可用主流组件Sentinel阿里轻量、功能全国内首选、Hystrix停更6. 远程调用RPC作用跨服务方法调用像调用本地方法一样简单。OpenFeignSpringCloud 原生HTTP 协议易用Dubbo阿里开源TCP 协议高性能 RPC 框架微服务经典gRPC谷歌跨语言适合跨语言调用四、分布式高可用 高并发设计集群部署服务多节点单点故障不影响整体负载均衡客户端负载Feign、Dubbo 内置轮询、随机、加权轮询、一致性哈希服务端负载Nginx缓存体系本地缓存Caffeine、Guava分布式缓存Redis缓存穿透、击穿、雪崩三大问题及解决方案读写分离 分库分表读写分离主库写、从库读缓解单库压力分库分表水平分表、垂直分表解决单表数据量过大问题中间件Sharding-JDBC、MyCat五、高频面试题精简答案CAP 和 BASE 怎么理解CAP 三选二分区容错必然存在BASE 是最终一致性互联网分布式系统主流选型。Redis 分布式锁存在哪些问题怎么解决死锁加过期时间、锁误删唯一标识、续期Redisson 看门狗、主从延迟Redlock。分布式事务有哪些方案项目中用哪种2PC、TCC、本地消息表、SAGA项目常用 Seata AT 模式。为什么要用消息队列解耦、削峰、异步、流量控制。服务雪崩怎么防护熔断、限流、降级、超时控制、重试机制。Nacos 和 ZooKeeper 区别Nacos 偏向 AP可用性高适合微服务注册ZK 偏向 CP一致性强适合配置、选举。六、学习路线循序渐进理解 CAP/BASE 理论分布式 ID、分布式锁注册中心 配置中心NacosRPC 远程调用Dubbo/Feign网关 Gateway熔断限流降级Sentinel消息队列 MQ分布式事务Seata缓存、分库分表、读写分离