您的位置:首页 > 其它

1.系统设计-概要

2015-10-04 13:24 405 查看
2015-10-04周日7:00

Howtodesignasystem?

Full-statcktechsolutionforstartups

Systemdesignis100%waitingforyouinthejob/promotioninterview.

2.What’sagooddesign?

*Healthiness

Execution

Communication

*Simplicity

Nomore;noless

Understandable

3.学习目标

Afterclass_1,youcananswer

a.Fundamentalquestionsinsystemdesigninterviews

Pleasedesignthesystem
Pleaseevaluatequerypersecond
Pleasescaleyoursystem


.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}

b.DesignNetfix/YouTube/Spotify

Uber,Google,Alibaba


Afterclass_2,youcananswer

a.Designdatawithclassandinheritance

b.Designusersystem

c.Designpaymentsystem



Afterclass_3,youcananswer

*Designcrawler

*Designthread-safeconsumerandproducer

*DesignTinyUrl

Afterclass_4,youcananswer

*Whathappenswhenyouvisitwww.google.cominyourbrower?

*Howtoincreasevistingspeedofawebpage?

*Design‘’秒杀“System?

*Designratelimiter

Afterclass_5,youcananswer

*Designdistributedfilesystem(GFS)anddatabase(BigTable)?

*Calculatewordappearance/invertedindex/anagramswithMapReduce

Afterclass_6,youcananswer

*DesignTwitter/Instagram/Facebook

*DesignWhatsAPP/FacebookChat

Afterclass_7,youcananswer

*Designtypeahead/instantsearch

*Achievementsystem

Afterclass_1,youcananswer


4.Pleasedesign‘Netflix”


如何设计视频网站


一、方案:界面


第一步.根据需求列出功能

a.登陆/注册

b.播放

c.电影推荐系统

第二步.排序

播放视频

*频道

*电影频道

*在频道中播放电影


二、必需:限制/前提


1.用户指标(系统设计最重要的指标)



5000000日活跃用户(问面试官)

2.预测

*用户量:

平均用户量=日活跃用户量/(每日秒数*平均在线时间)

=5,000,000/{(24*60*60)*(30*60)}
=104,167
假设平均在线时间是30分钟

高峰用户量=平均用户量*6=625,000
系统上线时的用户量=高峰用户*2=1,250,000



.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}

*带宽:
每个用户带宽=3mbps
最高带宽=1,250,000*3mbps=3.75TB/s

.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}

*内存:

每个用户占内存=10kb
每天内存=5,000,000*10*2(假设系统上线后用户量加倍)=100GB

.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}



*硬盘容量:

总的电影量=14,000
总的电影空间=14,000*50GB(高清)=700TB


.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}


三、应用程序:服务/模块


1.对每个请求增加一个服务

2.合并服务






四、数据设计


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

2.选择不同数据模型







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


1.分析

是否能抗压力
是否能增加模块
是否能深层更改(比如文件系统更换)

从不同角度分析:
性能
扩展性
健壮性

.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}

2.Gobackbyevolvingaccordingly(真不懂)



5.总结:


Crackadesignin5steps

*Scenaro:case/interface(方案:

*Necessary:constrain/hypothesis(必须:前提))

*Application:service/algorithm(应用程序)

*Kilobit:data(千比特;数据)

*Evolve(进化:)

snake


6.个人评测

编程(1/4)
.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}





设计(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

所以maxcapablity=5qps

4.Evolve

性能,扩展性,健壮性





a.提高性能














扩展多个推荐模块












8.7节课的内容






内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: