1.什么是系统设计?
系统设计是一个定义系统架构、模块、接口和数据满足特定需求的过程
比如设计一个短网址服务、评论服务、feed流系统、抢红包系统 秒少系统
微服务架构很多系统被按照业务拆分,需要单独设计一个系统服务
2.系统设计需要掌握哪些知识?
熟悉后端技术组件,比如消息队列 缓存 数据库 框架
具备文档撰写 流程图绘制 架构设计 编码实现等综合能力
3.系统设计怎么答?(三要素)
使用场景和限制条件
使用场景
限制条件--用户估计 并发qps
数据存储设计
需要设计数据表 字段 类型
数据库选项--是否需要持久化?使用关系型还是NoSQL?
如何优化?何如设计索引?是否可以使用缓存?
算法模块设计
需要哪些接口?接口如何设计?
使用什么算法或者模型?
不同实现方式之间的优劣对比,如何取舍?
延伸
扩展
用户多了,qps高了如何如理?
数据存储多路不够存了如何处理?
容错
故障如何处理?单点失败、多点失败、雪崩问题?
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。