PART 1
- 提纲挈领地讲解系统设计的几个要点:1 明确需求 2 总体设计 3 组件设计 4 机器规格
- https://www.puncsky.com/blog/2016-02-13-crack-the-system-design-interview
-
1.明确需求:功能和扩展性要求
-
2. 总体设计:提纲挈领地画出结构图,LB/反向代理/APP层/服务注册/服务层/存储层
-
3. 组件设计以及交互细节:
- LB:DNS rr(很少使用)/四层负载均衡/七层负载均衡,如果继续深挖,可以聊聊具体均衡算法rr/wrr等
- 反向代理
- app层:无状态服务,异步非阻塞模型
- 服务发现与微服务:zookeeper(cp)
- 存储:比较广泛
-
4. 粗略计算需要的机器数量:根据qps和bandwidth的较大者,预估服务器(cpu/mem/storage)