系统设计面试指南


原文地址
关于回答系统设计问题的模版以及系统设计问题的学习链接

本文由3部分组成——准备指南、系统设计模板和设计问题学习链接。

我在Amazon的系统设计面试中,观看了视频讲座,阅读了博客文章,并和朋友讨论了设计系统的各种方法。经过我的精心准备,我想出了一个在面试中使用的模板,想要分享它并希望它能帮助到正在准备系统设计面试的人。

准备

首先,在设计一个系统之前,学习基本概念是很重要的。了解所有的概念有助于您在设计系统时做出正确的决策。系统设计概念指南https://github.com/donnemartin/system-design-primer/blob/master/README.md
在学习了所有的基本概念之后,现在是开始设计的时候了。首先,你必须想到一个用例(例如:Instagram一个图片社交应用),并尝试设计所有的组件。主要考虑如何使您的系统具有容错性(系统始终启动并运行)和可伸缩性(处理不断增长的流量)。对瓶颈如何解决进行头脑风暴。整个过程可以帮助您将学到的概念应用在设计系统中。如果您在设计系统的步骤上遇到困难,请参考下面提供的设计模板。

我给你的建议是使用这个系统并探索所有的功能

对自己问以下问题:

  • 可以使用哪些不同的架构组件?
  • 这些组件如何互相交互?
  • 我们如何最好地利用这些组件:如何正确的权衡?
    你问的问题越多,从面试官那里得到的信息就越多,你的设计也就越好。

系统设计模版

1、需求

功能

系统或应用程序提供给用户哪些功能?例如:在Twitter中,用户可以关注另一个用户,发推文,喜欢一条推文,转发他人的推文,分享一条推文(关注Twitter的基本特性,不要深入研究Twitter的复杂特性)。

非功能

必须知道CAP定理:博客
对于任何分布式系统,以下是需要考虑的基本概念:

  • 高可用:大多数系统必须具有高可用性。
  • 一致性:具有高可用性的系统将达到最终一致性。任何银行系统都倾向于一致性而非可用性,因为数据(账户余额)不可能存在差异。
  • 可靠性:不会丢失用户数据
  • 延时: 用户请求的响应时间,如加载网页、点赞帖子等。

2、存储评估

  • 根据数据的形态:粗略的估计多少数据必须存储-知道什么样的数据库可以使用和文件存储,存储图像/视频。
  • 服务的请求数量:了解如何扩展服务。大量读请求的服务可以扩展为处理高流量的请求。
  • 读写比例:判断系统是读请求多还是写请求多。

3、数据库设计

在讨论完用户可以向服务发起的数据和操作请求之后。下一步是讨论您将使用哪种类型的数据库以及为什么。详细的差异SQL Vs NoSQL - 资料

4、系统概要设计

从最基本的设计开始:


扩展设计——创建特定的组件
  • 隔离服务——为了更容易扩展和流量控制


    服务隔离

服务和数据库多副本——单点故障-视频

  • 负载均衡——如果需要多话,在应用端和数据库端添加负载均衡器-视频博客
  • 消息队列——从紧耦合到松耦合/同步到异步通信--阅读消息队列消息队列优势
  • 数据分区——基于位置的分区、基于用户ID分区--视频博客
  • CDN内容分发网络—— 避免与主服务器之间的往返(减少延迟)视频, 面试问题
  • 缓存——分布式缓存和客户端缓存(用于更快的读访问)-- 视频, 博客, 指南

5、其他组件(可选)

如果您在面试中还有时间,可以将这些组件添加到设计中。了解这些组件有助于您回答任何深入的后续问题。一般来说,上面提到的内容就足够了,也会占用你面试的大部分时间。

  • 加密——用于消息传递服务以保护数据--博客
  • 业务分析——用于分析请求和用户数据
  • 机器学习服务——推荐/新闻提要排名(如果用例(Netflix)需要,那么就把它添加到基本组件中)-讨论你的推荐/排名模型所需的数据。
  • API网关——视频,微服务详解,和API网关学习视频列表
  • 服务发现——动态识别微服务--视频
    通过遵循这个模板,任何系统设计问题都可以在面试中设计出来。
    声明:下面提供的视频链接是一个系统设计的详细内容,可供深入实际系统设计参考。博客链接是简洁的,涵盖了特定系统的设计概念的使用。

设计问题

通用服务

社交服务

云服务

视频服务

视频是主要的数据,不同格式的视频必须存储。推荐服务是关键

在线购物

  • Amazon: 视频
    类似的系统:沃尔玛,Airbnb, eBay

社交软件系统

了解HTTP、连接池和WebSockets之间的区别,对于一个消息系统是很重要的— 视频

打车系统

视频会议

  • Zoom: 视频
    类似的系统:Skype,谷歌Meet
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容