System Design整个的High Level流程以及需要掌握的知识
4S Analysis
1. Scenario 场景
需要设计哪些功能,有哪些用例,有多大的访问量等。
2. Service 服务
将整个系统拆分成多个小系统,各司其职。
3. Storage 存储
数据应该如何存储和访问。
4. Scale 升级
遇到瓶颈如何升级,未来可能遇到的问题和解决方案。
Scenario
- 列出所有需要设计的功能
- 选出核心功能,因为时间太多不可能实现所有功能,优先实现核心功能
- 讨论并发用户/请求的数量 DAU和QPS,假设峰值是average的2-3倍
讨论、计算Read QPS 和 Write QPS
QPS = 100 : 自己的笔记本就行
QPS = 1k: 一台服务器
QPS = 1m: 1000台服务器的集群
? 一台 Web Server 约承受量是 1k 的 QPS (考虑到逻辑处理时间以及数据库查询的瓶颈)
? 一台 SQL Database 约承受量是 1k 的 QPS(如果 JOIN 和 INDEX query比较多的话,这个值会更小)
? 一台 NoSQL Database (Cassandra) 约承受量是 10k