2015-10-04周日7:00
How to design a system?
Full-statck tech solution for startups
System design is 100% waiting for you in the job/promotion interview.
2.What’s a good design?
*Healthiness
Execution
Communication
*Simplicity
No more ; no less
Understandable
3.学习目标
After class_1,you can answer
a. Fundamental questions in system design interviews
Please design the system Please evaluate query per second Please scale your system
b.Design Netfix / YouTube / Spotify
Uber,Google,Alibaba
After class_2,you can answer
a.Design data with class and inheritance
b.Design user system
c. Design payment system
After class_3,you can answer
*Design crawler
*Design thread-safe consumer and producer
* Design TinyUrl
After class_4,you can answer
*What happens when you visit www.google.com in your brower?
* How to increase visting speed of a webpage?
*Design ‘’秒杀“System?
*Design rate limiter
After class_5,you can answer
*Design distributed file system (GFS) and database(BigTable)?
*Calculate word appearance /inverted index/ anagrams with MapReduce
After class_6,you can answer
*Design Twitter / Instagram /Facebook
*Design WhatsAPP/Facebook Chat
After class_7,you can answer
*Design typeahead /instant search
*Achievement system
After class_1,you can answer
4.Please design ‘Netflix”
如何设计视频网站
一、方案:界面
第一步. 根据需求列出功能
a. 登陆/注册
b.播放
c. 电影推荐系统
第二步.排序
播放视频
*频道
*电影频道
* 在频道中播放电影
二、必需:限制/ 前提
1.用户指标(系统设计最重要的指标)
500 0000 日活跃用户(问面试官)
2.预测
*用户量:
平均用户量= 日活跃用户量/(每日秒数 * 平均在线时间) =5 ,000,000/{ (24*60*60)*(30*60)} = 104,167 假设平均在线时间是30分钟 高峰用户量 = 平均用户量*6 = 625,000 系统上线时的用户量 = 高峰用户*2 = 1,250,000*带宽:
每个用户带宽 = 3 mbps 最高带宽 = 1,250,000 * 3 mbps = 3.75 TB/s* 内存:
每个用户占内存 = 10kb 每天内存 = 5,000,000*10*2(假设系统上线后用户量加倍)= 100GB
*硬盘容量:
总的电影量 = 14,000 总的电影空间 = 14,000 * 50GB (高清)= 700TB
三、应用程序:服务/模块
1.对每个请求增加一个 服务
2.合并服务
四、数据设计
1. 对于一个请求单独用一个数据
2.选择不同数据模型
五、进化(目前为止你只是完成了基本设计,接下来你需要进化一下)
1. 分析
是否能抗压力 是否能增加模块 是否能深层更改(比如文件系统更换) 从不同角度分析: 性能 扩展性 健壮性2.Go back by evolving accordingly(真不懂)
5.总结:
Crack a design in 5 steps
*Scenaro: case/interface (方案:
*Necessary: constrain/hypothesis(必须:前提))
*Application : service /algorithm(应用程序)
*Kilobit: data(千比特;数据)
*Evolve(进化:)
snake
6.个人评测
编程(1/4)

设计(2/4)
理解/学习(3/4)
总结/ 表达/教学(4/4)
2015-10-04 :现在的我{ 2+1+3+3} = 9
7.举例:设计推荐模块
采用snake 模式作答:
1.Scenario : interface
2.Necessary:constrain/hypothesis
(每十分钟给用户更换推荐)
3.Alogrithm +Data
如果要更新用户推荐,改算法需要时每个用户 200ms.高峰用户是1,250,000
所以max capablity = 5qps
4.Evolve
性能,扩展性,健壮性
a. 提高性能
扩展多个推荐模块
8. 7节课的内容