系统设计
About 2 min
系统设计
参考文档
系统设计中常说的 Tradeoff 是什么:权衡,面试官最看重的
什么叫 SOA
什么是 Pull Model 和什么是 Push Model
数据存储系统有哪些,什么样的数据适合存在什么样的数据存储系统中
什么是异步任务和消息队列
问题
设计 xxx 系统
设计 xx 系统中的 xx 功能
访问限制系统:memcached
设计统计某事件历史发生次数:监控设计
OOD vs SD
OOD 是微观设计,手把手 Coding
SD 是高屋建瓴宏观的设计:Backend design,数据库如何设计、xxx
游戏设计、电梯设计就是 OOD
评分标准
- 可行解
- 特定问题
- 分析能力
- 权衡
- 知识储备
4S 分析法
scenario, 场景
- 说人话:需要设计哪些功能,设计得多牛
- Ask/ Features/ QPS/ DAU/ Interfaces
service, 服务
- 说人话:将大系统拆分为小服务
- Split/ application/ module
storage, 存储
- 说人话:数据如何存储与访问
- Schema/ Data/ SQL/ NoSQL/ File System
scale 升级
- 说人话:解决缺陷,处理可能遇到的问题
- Sharding/ Optimize/ Special Case
问面试官 Scenario
推特系统中,最核心的是新鲜事系统
pull 模型、慢,用的时候现查
push 模型
fanout、denormalieze
复杂度分析
news feed -= 1 次 DB Read
POST a tweet N 个粉丝,需要 n 次 DB write,异步任务
无需用户等待
news feed table
复合索引
缺点:
广告用 Pull 模型
需要用推荐排序算法时,pull 模型
定义明星:不动态判断即可,离线的确认,即使掉粉了也认为是明星