摘要:演讲的内容就是如何设计一个系统,做back of envelope analysis。当然还有一些金句,比如说系统要设计成10x但是是别担心100x的traffic,比如说,还有一些每个人都要知道的number。
大概在2008-2009年前后,Jeff Dean在公开场合做过几次演讲,有一次是在斯坦福。
演讲的内容就是如何设计一个系统,做back of envelope analysis。当然还有一些金句,比如说系统要设计成10x但是是别担心100x的traffic,比如说,还有一些每个人都要知道的number。
这之后大数据迎来了一波发展,涌现出了很多技术。而relational database则成为了没希望的技术。实在要用数据库,那就先sharding。
之后很多的公司面试就都需要interview system design了。
更有趣的事情在于,这个面试发展出了一个产业,比如著名的Alex Xu的书。而面试官也好,面试者也好,其实都不是通才,都不见得真的做过那么多系统。
那么怎么办呢?大家都照本宣科的学习。而Jeff Dean显然是这方面的鼻祖,他说过的话,做过的事情自然是经典。
问题来了,现在这几年的硬件发展是很夸张的。如果你去看一下AWS提供的机器的话,几十GB的memory到几TB的memory都有,至于SSD硬盘,10个TB应该是小意思了。
软件技术的发展,也日新月异。以前大家觉得relational database要完蛋了,其实不是,现在数据量几十个TB,一个node的PostgreSQL就够了。每秒处理10k个访问轻轻松松的根本就不是个事情。
而且NoSQL也今时不同往日了。比如说,应该没什么人继续用HBase了,除非是Legacy。毕竟relational database已经很能打了。
亚马逊的DynamoDB现在也牛逼了,支持Strong consistency好多年了。之前的刻板印象都消失了。
有时候我真的觉得PostgreSQL能干的事情,DynamoDB也能干。
当然Cassandra还是经常会跳几下的,因为写的速度确实够快,Netflix还给调优了一下。
所以现在就出现了一个很奇怪的现象,一边来面试的人,动不动就要这种情况下选nosql,那个情况下要sharding。
另外一边现实情况是,目前的技术发展早就日新月异,无论硬件还是软件,都不是十几年前的样子了。
如果你真的在AWS上买过机器搭过服务的话,大概率是知道,很多东西,早就不是当年那一套了。
但是呢?面试还是面试,该按照什么套路来的,还是按照什么套路来。面试官们是不是真的搭过Uber,搭过YouTube,搭过SnapChat不重要,重要的是,他们按照套路面,你按照套路答。
要是遇到一个真有实操经验的人,说一些实际的情况,面试官都不知道你说的是对还是错。这才是荒谬的地方。
不过想想,刷题刷上几千道,工作完全用不到,system design也刷起来,总而言之,这年头找工作那真的是不容易,和找到工作以后,干的活,完全不是一回事。
欢迎加入飞总知识星球。一顿饭的钱,和飞总交个朋友。
来源:飞总聊IT