Thursday, July 18, 2019

System design tips

system design tips 

Here is the link. 


书籍:
每本书看两个月左右的样子,很认真的看的,但是大部分东西消化不了
Operating system - three easy piece-baidu 1point3acres
Designing Data-Intensive Application

课程:
- https://www.hiredintech.com/courses/system-design 
https://www.educative.io (这个讲的蛮好的, 我看了好多遍)
https://github.com/donnemartin/system-design-primer(这个基础知识讲的不错, 但是具体例子一般)
- Distributed Systems in One Lesson(Safari上有完整版, 4小时左右, 讲的很好)

Youtube视频:
刷题刷累了, 我就看着这些视频当消遣。。。 蛮有趣的。。 比做题有趣的多。。。. From 1point 3acres bbs
- Scalability Harvard Web Development
- Gaurav Sen
- Tushar Roy - Coding Made Simple
- Tech Dummies - Narendra L
- Coding Tech

微信公众号:
- 架构师之路(强推!!!)
- 51CTO

深入研究了以下几个component:
虽然实际工作中没有怎么用, 但是因为简历里有提到,所以我认真看了官方文档, 设计文档,各种教学视频... 
我主要关注architecture, 而不是api应用。
- Kafka
- Cassandra
- Consul

我自己的系统设计套路:
1. 讨论用户是谁
2. 根据用户讨论feature
3. 问一下系统需要handle 的traffic, 问问需不需要进行计算。 面了8次系统设计,只有roblox 要求计算。其他都不要。。。
4. 根据feature讨论系统需要存储和serve哪些data, 这些data用什么存, 讨论sql/nosql/cache/object storage/hdfs 取舍, 巴拉巴拉。。。
5. 根据数据, 设计service。 画图。
6. work through一个use case, 把所有service连起来, 同时修改刚才画好的图。 比如 做uber eats, 讨论用户要order 一个食物,到餐馆接到订单, 到司机接到订单。。。。 
7. 讨论use case细节, 比如 uber eats司机进入某个区域怎么识别啊, cache里怎么存啊。面试官全程都会drive你的design的, 不会丢你在那里自言自语。
8. 面试官会问, 某些环节挂掉了,怎么处理。 无非就是1. 要么replica, master slave, active-passive 或者 2.周期存snapshot 在磁盘上,然后存action log... 挂了可以重新恢复。。。
9. 一些环节怎么scale... multi instance, partition 这些呗。。 偶尔说说service mesh...

1 comment:

  1. 我偏向用SOA (Service Oriented Architecture)架构,用微服务实现,运行在Kubernetes Cluster上,用Kafka/Serverless/Spark/Cassandra/HDFS/Redis/python falcon/redis...

    ReplyDelete