一句话总结
系统设计面试考察架构思维,核心考点:设计方法论(需求→高层→深入→权衡)、负载均衡(L4/L7+算法)、多级缓存(浏览器→CDN→Nginx→Redis→DB)、数据库分片(垂直/水平+一致性哈希)。记住关键数字:磁盘10ms、SSD 0.1ms、同机房0.5ms、跨区域150ms。
设计方法论
系统设计四步法:
1. 需求澄清:明确功能范围、用户规模、性能要求。不要急于设计,先问清楚。
2. 高层设计:画出系统架构图,确定核心组件(客户端→API网关→服务→数据库)。
3. 深入设计:选择具体技术方案,讨论存储、缓存、消息队列等。
4. 权衡分析:讨论方案的优缺点、瓶颈和扩展性。
关键数字:1秒=1000ms,磁盘寻道10ms,SSD读0.1ms,网络同机房0.5ms,跨区域150ms。
负载均衡
四层 vs 七层负载均衡:
四层(L4):基于IP和端口转发,如LVS。性能高,功能简单。
七层(L7):基于HTTP协议转发,如Nginx。支持路径路由、Header改写等。
负载均衡算法:
1. 轮询(Round Robin)
2. 加权轮询
3. 最少连接数
4. 一致性哈希
CDN与缓存
CDN(内容分发网络):将静态资源缓存到离用户最近的边缘节点,减少延迟。
多级缓存架构:
1. 浏览器缓存:强缓存(Cache-Control)+ 协商缓存(ETag/Last-Modified)
2. CDN缓存:边缘节点缓存
3. 反向代理缓存:Nginx缓存
4. 应用缓存:本地缓存(Guava/Caffeine)+ 分布式缓存(Redis)
5. 数据库缓存:Buffer Pool
数据库分片
垂直分片:按业务拆分数据库,如用户库、订单库、商品库。
水平分片:同一表的数据按规则分布到多个库。
分片策略:
1. Range分片:按ID范围,易出现热点
2. Hash分片:按ID哈希,分布均匀但扩容困难
3. 一致性哈希:扩容只需迁移少量数据
分片后的问题:跨库JOIN、分布式事务、全局ID生成(雪花算法)、数据迁移。