分布式系统设计
· 阅读需 5 分钟
shardingSphere
Cassandra
真正能落地、面试也能直接用的《分布式系统设计》完整指南,从原理到架构、到坑点,一次讲透。 全程通俗、不玄学、不堆砌名词。
一、分布式系统到底是什么?
一句话: 把一个系统拆成多个服务/节点,部署在多台机器上,协同完成一件事。
目的:
- 高并发扛得住
- 高可用不挂掉
- 好扩展、好升级
- 不被单点故障搞崩
代价:
- 复杂度爆炸
- 网络不可靠
- 数据不一致
- 排错极难
二、分布式系统的 5 大核心问题(必须解决)
1. 节点之间怎么通信?
- HTTP/REST(简单)
- gRPC(高性能、强类型)
- MQ 消息队列(异步解耦)
原则: 能异步就不同步,能消息就不调用。
2. 怎么保证高可用?
核心手段:
- 集群:同一个服务部署多份
- 负载均衡:Nginx/LVS/K8s Service
- 熔断:调用失败自动停掉(Sentinel/Hystrix)
- 降级:核心功能保留,非核心砍掉
- 限流:不让流量冲垮系统
口诀: 集群 + 负载 + 熔断 + 降级 + 限流 = 高可用
3. 怎么保证数据一致性?
分布式最难点:网络不可靠 → 数据可能不一致
常用方案:
-
CAP 理论
- C 一致性
- A 可用性
- P 分区容错 → 分布式必须选 P,只能在 CP 或 AP 之间取舍
-
BASE 理论
- 基本可用
- 软状态
- 最终一致性 → 互联网系统绝大多数用 最终一致
-
分布式事务
- 2PC / 3PC
- TCC
- SAGA 长事务
- 本地消息表 / 可靠消息最终一致
实际工作: 90% 场景用消息队列 + 最终一致就够了。
4. 怎么保证全局唯一 ID?
不能用自增 ID,必须分布式 ID。
方案:
- UUID(简单但无序、太长 )
- Snowflake 雪花算法(最常用)
- 号段模式(数据库批量分配)
企业标准:雪花算法。
5. 怎么解决分布式锁?
多个节点同时操作一份资源,必须锁。
方案:
- Redis 分布式锁(最常用)
- Zookeeper 分布式锁(强一致)
- etcd
要点: 防死锁、防超时、防误删、可重入。
三、分布式系统标准分层架构(背会就能设计任何系统)
接入层
└─ 网关、限流、黑白名单、路由
应用层(微服务)
└─ 用户服务、订单服务、支付服务、商品服务
领域层
└─ 核心业务逻辑、状态机、流程引擎
数据层
└─ 分库分表、主从、缓存、搜索引擎
中间件层
└─ MQ、分布式锁、配置中心、注册中心
基础设施
└─ 日志、监控、链路追踪、告警
四、分布式系统关键技术(高频重点)
1. 服务治理
- 注册发现:Nacos / Eureka / Consul
- 配置中心:Nacos / Apollo
- 链路追踪:SkyWalking / Pinpoint / Jaeger
- 服务监控:Prometheus + Grafana
2. 流量控制
- 限流:令牌桶/漏桶
- 熔断:失败率达到阈值直接切断
- 隔离:线程池隔离、舱壁模式
3. 缓存架构
- L1:本地缓存 Caffeine
- L2:Redis 分布式缓存
- 解决三大问题:
- 缓存穿透
- 缓存击穿
- 缓存雪崩
4. 数据库扩展
- 主从分离:读多写少
- 分库分表:
- 水平分表(按 user_id 拆分)
- 垂直分库(订单库、用户库分开)
5. 异步解耦(MQ)
作用:
- 削峰
- 异步
- 解耦
- 最终一致性
保证:
- 消息不丢
- 消息不重复
- 消息有序(需要的话)
五、分布式系统设计 8 步万能模板(面试/工作通用)
你以后设计任何分布式系统,都按这个来:
- 明确业务流程
- 拆分领域/微服务
- 定义接口与数据模型
- 选存储(MySQL/Redis/MQ/ES)
- 处理并发:分布式锁、限流、幂等
- 保证一致性:最终一致/分布式事务
- 保证高可用:集群、熔断、降级
- 监控、日志、告警
六、最经典的 4 个问题(面试必考)
1. 分布式锁怎么实 现?
Redis + SETNX + 过期时间 + 防误删 + 可重入。
2. 分布式 ID 怎么生成?
雪花算法:时间戳 + 机器ID + 序列号。
3. 分布式事务怎么解决?
可靠消息最终一致性 / SAGA / TCC。
4. 缓存三大问题怎么解决?
- 穿透:布隆过滤器 / 缓存空值
- 击穿:互斥锁 / 热点数据永不过期
- 雪崩:过期时间随机 + 集群 + 熔断
七、极简总结(最核心)
分布式系统设计 = 高可用 + 高并发 + 数据一致 + 可扩展 + 可运维
手段就是: 集群、负载、缓存、分库分表、消息队列、分布式锁、熔断限流、最终一致
如果你愿意,我可以现场带你从零设计一个真实分布式系统,比如:
- 秒杀系统
- 订单支付系 统
- IM 聊天系统
- 网盘系统
- 微服务架构
