架构设计学习资料汇总

简介: Medium上的这篇文章介绍了作者学习系统架构的一些在线资源,可以帮助架构设计的初学者尽快了解架构的基本设计原则,了解常见场景的设计方案。
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
目录
相关文章
|
6月前
|
SpringCloudAlibaba Java 持续交付
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
412 0
|
SQL 存储 数据库
Hive简介、什么是Hive、为什么使用Hive、Hive的特点、Hive架构图、Hive基本组成、Hive与Hadoop的关系、Hive与传统数据库对比、Hive数据存储(来自学习资料)
1.1 Hive简介 1.1.1   什么是Hive Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。 1.1.2   为什么使用Hive Ø  直接使用hadoop所面临的问题 人员学习成本太高 项目周期要求太短 MapReduce实现复杂查询逻辑开发难度太大   Ø  为什么要使用Hive 操作接口采用类SQ
26895 0
|
Java 程序员 微服务
未雨绸缪:Java高级架构进阶必学之 ⑥ 大知识要点附视频学习资料
程序员,一个令人向往的职业,看起来有着高薪酬、高技术,还是一群高智商、头脑灵活的人。事实上,程序员的工作,让人非常抓狂,程序员的生活,异常线性单调。
1395 0
|
Java 程序员 Spring
业余草分享100套精选1000G架构师资料课程(超1T的IT学习资料免费送)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xmt1139057136/article/details/79424245 业余草分享100套精选1000G架构师资料课程(超1T的IT学习资料免费送)。
1301 0
|
13天前
|
缓存 负载均衡 JavaScript
探索微服务架构下的API网关模式
【10月更文挑战第37天】在微服务架构的海洋中,API网关犹如一座灯塔,指引着服务的航向。它不仅是客户端请求的集散地,更是后端微服务的守门人。本文将深入探讨API网关的设计哲学、核心功能以及它在微服务生态中扮演的角色,同时通过实际代码示例,揭示如何实现一个高效、可靠的API网关。
|
11天前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
11天前
|
Dubbo Java 应用服务中间件
服务架构的演进:从单体到微服务的探索之旅
随着企业业务的不断拓展和复杂度的提升,对软件系统架构的要求也日益严苛。传统的架构模式在应对现代业务场景时逐渐暴露出诸多局限性,于是服务架构开启了持续演变之路。从单体架构的简易便捷,到分布式架构的模块化解耦,再到微服务架构的精细化管理,企业对技术的选择变得至关重要,尤其是 Spring Cloud 和 Dubbo 等微服务技术的对比和应用,直接影响着项目的成败。 本篇文章会从服务架构的演进开始分析,探索从单体项目到微服务项目的演变过程。然后也会对目前常见的微服务技术进行对比,找到目前市面上所常用的技术给大家进行讲解。
28 1
服务架构的演进:从单体到微服务的探索之旅
|
9天前
|
消息中间件 监控 安全
后端架构演进:从单体到微服务####
在数字化转型的浪潮中,企业应用的后端架构经历了从传统单体架构到现代微服务架构的深刻变革。本文探讨了这一演进过程的背景、驱动力、关键技术及面临的挑战,揭示了如何通过微服务化实现系统的高可用性、扩展性和敏捷开发,同时指出了转型过程中需克服的服务拆分、数据管理、通信机制等难题,为读者提供了一个全面理解后端架构演变路径的视角。 ####
27 8
|
10天前
|
Cloud Native 安全 API
云原生架构下的微服务治理策略与实践####
—透过云原生的棱镜,探索微服务架构下的挑战与应对之道 本文旨在探讨云原生环境下,微服务架构所面临的关键挑战及有效的治理策略。随着云计算技术的深入发展,越来越多的企业选择采用云原生架构来构建和部署其应用程序,以期获得更高的灵活性、可扩展性和效率。然而,微服务架构的复杂性也带来了服务发现、负载均衡、故障恢复等一系列治理难题。本文将深入分析这些问题,并提出一套基于云原生技术栈的微服务治理框架,包括服务网格的应用、API网关的集成、以及动态配置管理等关键方面,旨在为企业实现高效、稳定的微服务架构提供参考路径。 ####
35 5
下一篇
无影云桌面