初阶
对于0基础的同学们。下面的资料可以按顺序开始看
1.http://www.hiredintech.com/app#system-design
这是一个专门准备面试的网站,你只用关心system design部分,有很多的link后面会重复提到,建议看完至少一遍。
非常非常好的入门资料, 建议看3遍以上!
这是1里面提到的资料,是Harvard web app课的最后一节。 讲scalability 里面会讲到很多基础概念比如Vertical scaling, Horizontal scaling, Caching, Load balancing, Database replication, Database partitioning, 还会提到很多基本思想,比如avoid single point of failure。
再强调一遍 非常好的资料!
3.http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones1
里面提到的 Scalability for Dummies 还算不错,可以看一遍,知道基本思想。
结束语:当你结束这一部分的学习的时候 你已经比50%的candidate知道的多了(因为很多人都不准备 或者不知道怎么准备system design) 恭喜:)
进阶
这一部分的资料更加零散,每个看的可能不一样,但是你每多看一篇文章或者一个视频,你就比别人强一点这部分你会遇到很多新名词 。
我的建议是每当你遇到一个不懂的概念时, 多google一下,看看这个概念或者技术是什么意思, 优点和缺点各是什么, 什么时候用,这些你都知道以后,你就可以把他运用到面试中,让面试官刮目相看了。
Database Sharding是一个很重要的概念 建议看一看
5.http://highscalability.com/all-time-favorites/
这个里面会讲到很多非常流行的网站架构是如何实现的 比如Twitter, Youtube,
Pinterest, Google等等 我的建议是看5-6个 然后你应该已经建立起了一些基本的意识还有知道了某些技术和产品的作用和mapping 比如说到cache你会想到memcached和 Redis 说到load balancer你会想到 Amazon ELB, F5一类的
5里面很多的文章都会有链接 其中有很多会指向这个网站 这里面有很多的tech talk
很不错 可以看看
7.https://www.facebook.com/Engineering/notes
Facebook非常好的技术日志 会讲很多facebook的feature怎么实现的 比如facebook message: https://www.facebook.com/notes/facebook-engineering/the-underlying-technology-of-messages/454991608919 建议看看 尤其是准备面facebook的同学
这有一个facebook talk讲storage的 https://www.youtube.com/watch?v=5RfFhMwRAic
- 最后一些概念很有用,都是我再看这些资料的时候发现的。如果你没有遇到或者查过,建议查查
Distributed Hash Table
Eventual Consistency vs Strong Consistency
Read Heavy vs Write Heavy
Consistent Hashing
Sticky Sessions
Structured Data(uses DynamoDB) vs Unstructured Data(uses S3)
http://smartdatacollective.com/michelenemschoff/206391/quick-guide-structured-and-unstructured-data
http://stackoverflow.com/questions/18678315/amazon-s3-or-dynamodb