1.系统设计-概要

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.合并服务

image

四、数据设计

1. 对于一个请求单独用一个数据

2.选择不同数据模型

image

 

五、进化(目前为止你只是完成了基本设计,接下来你需要进化一下)

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)

image

设计(2/4)

image

理解/学习(3/4)

image

总结/ 表达/教学(4/4)

image

 

image

 

2015-10-04 :现在的我{ 2+1+3+3} = 9

 

7.举例:设计推荐模块

image

采用snake 模式作答:

1.Scenario : interface

image

2.Necessary:constrain/hypothesis

(每十分钟给用户更换推荐)

image

3.Alogrithm +Data

image

如果要更新用户推荐,改算法需要时每个用户 200ms.高峰用户是1,250,000

所以max capablity = 5qps

 

4.Evolve

性能,扩展性,健壮性

image

 

a. 提高性能

image

image

扩展多个推荐模块

image

image

8.  7节课的内容

image

posted @ 2015-10-04 13:24  农民阿姨  阅读(546)  评论(1编辑  收藏  举报