写点什么

架构设计学习资料汇总

作者:俞凡
  • 2022 年 4 月 05 日
  • 本文字数:3731 字

    阅读完需:约 12 分钟

Medium 上的这篇文章介绍了作者学习系统架构的一些在线资源,可以帮助架构设计的初学者尽快了解架构的基本设计原则,了解常见场景的设计方案。原文:System Architecture — System Design Materials[1]


子曰:“工欲善其事必先利其器”。


今天通过这篇文章跟大家分享一些系统架构设计方面的学习资料,让我们一起成长。


System Design Tips and Introduction (中文, Youtube)[2]

The System Design Primer (中文/英文, Github)[3]

Intro to Architecture and Systems Design Interviews (英文, Youtube)[4]

Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems (中文版《数据密集型应用系统设计》, Book)[5][6]

system design interview questions (英文, Github)[7]

System Design Interview – Step By Step Guide (英文, Youtube)[8]

Distributed Systems (英文, Book)[9]

Distributed systems for fun and profit (英文, Book)[10]

6.824: Distributed Systems (英文, Course)[11]

Concurrent and Distributed Systems (英文, Course)[12]

15-440: Distributed Systems Syllabus (英文, Course)[13]

CS244b: Distributed Systems (英文, Course)[14]

CSE 490H: Distributed Systems (英文, Course)[15]

Apache Hadoop (Open source, Github)[16]

SeaweedFS (Open source, Github)[17]

MinIO (Open source, Github)[18]

TiDB (Open source, Github)[19]

etcd (Open source, Github)[20]

Apache ZooKeeper (Open source, Github)[21]

Apache Spark (Open source, Github)[22]

Apache Flink (Open source, Github)[23]

Ray (Open source, Github)[24]

Notes on Distributed Systems for Young Bloods (英文, Blog)[25]

Distributed systems theory for the distributed systems engineer (英文, Blog)[26]

分布式系统 (中文, Blog)[27]

Distributed Systems Reading Group (英文, Paper)[28]

awesome-distributed-systems (英文, Github)[29]

Grokking the System Design Interview (英文, Course)[30]

Tech Dummies Narendra L (英文, Youtube)[31]

Design video sharing platform (英文, Blog)[32]

System Design Basics (英文, Youtube)[33]

code karle (英文, Youtube)[34]

System Design Introduction For Interview (英文, Youtube)[35]

Distributed Systems (英文, Youtube)[36]

System Design (中文, Gitbook)[37]

CS6213 Special Topics in Distributed Computing (英文, Course)[38]


分布式系统


  1. 基本问题: 时间问题,一致性问题,容错技术,共识算法,并发控制

  2. 基本定理: CAP, PACELC, FLP


CAP theorem (英文, Wikipedia)[39]

PACELC theorem (英文, Wikipedia)[40]

Consensus (英文, Wikipedia)[41]


  1. 生产系统: MapReduce, Spark, GFS, Dynamo 和 Cosmos


MapReduce (英文, Wikipedia)[42]

Apache Spark (英文, Wikipedia)[43]

Google File System (英文, Wikipedia)[44]

Dynamo (英文, Wikipedia)[45]

Cosmos (英文, Wikipedia)[46]


系统架构设计需要考虑的问题
  1. 可靠性(Reliable)

  2. 可扩展性(Scalable)

  3. 可维护性(Maintainable)

  4. 存储与检索(Storage and Retrieval)

  5. 冗余备份(Redundancy/Replication)

  6. 分片分区(Fragmentation/Partition)

  7. 事务(Transactions)

  8. 一致性(Consistency)

  9. 共识(Consensus)

  10. 批处理/流处理(Batch processing/stream processing)


如何准备系统设计面试
  1. 找相关的博客学习

  2. 坦率的说,面试不会问得非常深入,不过如果有机会解释清楚,就能给面试官留下更好的印象

  3. 试着设计一些东西,写下功能性/非功能性的需求,画出设计图、数据流、流程流,并考虑商业模型从而帮助系统盈利,并考虑如何各个组件如果崩溃需要如何处理。

  4. 明确设计的取舍

  5. 保持自信

  6. 不要试图炫耀,你可能只是了解了某一方面,但其他方面你并不了解。

  7. 注意观察面试官,如果发现面试官对这部分不感兴趣,就不要花太多时间。

  8. 不要轻易放弃自己的意见,面试官质疑候选人是常规操作。不要因为面试官的挑战、质疑就觉得自己错了。


References:

[1] System Architecture — System Design Materials: https://jinlow.medium.com/system-architecture-system-design-materials-52705af6c155

[2] System Design Tips and Introduction: https://youtu.be/th_73AVA4dY?list=PLAd5bt5mn3V3TrrJFBpnu4PH9e8KZMvNA

[3] The System Design Primer: https://github.com/donnemartin/system-design-primer

[4] Intro to Architecture and Systems Design Interviews: https://youtu.be/ZgdS0EUmn70

[5] Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems: https://www.amazon.com/Designing-Data-Intensive-Applications-Reliable-Maintainable/dp/1449373321

[6] 数据密集型应用系统设计: https://book.douban.com/subject/30329536/

[7] system design interview questions: https://github.com/jaychsu/FreemanZhang-system-design

[8] System Design Interview – Step By Step Guide: https://youtu.be/bUHFg8CZFws

[9] Distributed Systems: https://www.distributed-systems.net/index.php/books/ds3/

[10] Distributed systems for fun and profit: http://book.mixu.net/distsys/index.html

[11] 6.824: Distributed Systems: https://pdos.csail.mit.edu/6.824/schedule.html

[12] Concurrent and Distributed Systems: https://www.cl.cam.ac.uk/teaching/2021/ConcDisSys/materials.html

[13] 15-440: Distributed Systems Syllabus: https://www.cs.cmu.edu/~dga/15-440/S14/syllabus.html

[14] CS244b: Distributed Systems: http://www.scs.stanford.edu/20sp-cs244b/

[15] CSE 490H: Distributed Systems: https://courses.cs.washington.edu/courses/cse490h/11wi/

[16] Apache Hadoop: https://github.com/apache/hadoop

[17] SeaweedFS: https://github.com/chrislusf/seaweedfs

[18] MinIO: https://github.com/minio/minio

[19] TiDB: https://github.com/pingcap/tidb

[20] etcd: https://github.com/etcd-io/etcd

[21] Apache ZooKeeper: https://github.com/apache/zookeeper

[22] Apache Spark: https://github.com/apache/spark

[23] Apache Flink: https://github.com/apache/flink

[24] Ray: https://github.com/ray-project/ray

[25] Notes on Distributed Systems for Young Bloods: https://www.somethingsimilar.com/2013/01/14/notes-on-distributed-systems-for-young-bloods/

[26] Distributed systems theory for the distributed systems engineer: https://www.the-paper-trail.org/post/2014-08-09-distributed-systems-theory-for-the-distributed-systems-engineer/

[27] 分布式系统: https://www.qtmuniao.com/categories/%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/

[28] Distributed Systems Reading Group: http://dsrg.pdos.csail.mit.edu/papers/

[29] awesome-distributed-systems: https://github.com/theanalyst/awesome-distributed-systems

[30] Grokking the System Design Interview: https://www.educative.io/courses/grokking-the-system-design-interview?affiliate_id=5749180081373184

[31] Tech Dummies Narendra L: https://www.youtube.com/channel/UCn1XnDWhsLS5URXTi5wtFTA

[32] Design video sharing platform: https://leetcode.com/discuss/interview-question/system-design/496042/Design-video-sharing-platform-like-Youtube

[33] System Design Basics: https://youtu.be/xpDnVSmNFX0?list=PLMCXHnjXnTnvo6alSjVkgxV-VH6EPyvoX

[34] code karle: https://www.youtube.com/channel/UCZEfiXy7PmtVTezYUvc4zZw

[35] System Design Introduction For Interview: https://youtu.be/UzLMhqg3_Wc?list=PLrmLmBdmIlps7GJJWW9I7N0P0rB0C3eY2

[36] Distributed Systems: https://youtu.be/UEAMfLPZZhE?list=PLeKd45zvjcDFUEv_ohr_HdUFe97RItdiB

[37] System Design: https://xunhuanfengliuxiang.gitbooks.io/system-desing/content/

[38] CS6213 Special Topics in Distributed Computing: https://ilyasergey.net/CS6213/index.html

[39] CAP theorem: https://en.wikipedia.org/wiki/CAP_theorem

[40] PACELC theorem: https://en.wikipedia.org/wiki/PACELC_theorem

[41] Consensus: https://en.wikipedia.org/wiki/Consensus_%28computer_science%29

[42] MapReduce: https://en.wikipedia.org/wiki/MapReduce

[43] Apache Spark: https://en.wikipedia.org/wiki/Apache_Spark

[44] Google File System: https://en.wikipedia.org/wiki/Google_File_System

[45] Dynamo: https://en.wikipedia.org/wiki/Dynamo_%28storage_system%29

[46] Cosmos: https://en.wikipedia.org/wiki/Cosmos_%28operating_system%29


你好,我是俞凡,在 Motorola 做过研发,现在在 Mavenir 做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI 等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。

微信公众号:DeepNoMind

发布于: 刚刚阅读数: 2
用户头像

俞凡

关注

公众号:DeepNoMind 2017.10.18 加入

俞凡,Mavenir Systems研发总监,关注高可用架构、高性能服务、5G、人工智能、区块链、DevOps、Agile等。公众号:DeepNoMind

评论

发布
暂无评论
架构设计学习资料汇总_架构_俞凡_InfoQ写作平台