• Youtube 是世界上最受欢迎的视频分享网站之一。该服务的用户可以上传、查看、分享、评价和报告视频以及添加对视频的评论。 系统的要求和目标为了这个练习,我们计划设计一个更简单的 Youtube 版本,具有以下要求:功能要求:
  • 至关重要的是要记住,这个(系统)是一个概念、一个想法,而不是对世界上真实事物的描述。令人惊讶的是,在许多系统文献中,作者经常忽视这一点。他们陷入了学术上最常见的错误,即物化;也就是说,假设因为一个词存在,那么一定有一些现实世界与之相关,这个词只是它的一个名字。通常,“系统”提
  • 如何设计一个类似于 Tinder 的基于位置的社交搜索应用程序,如果经常用作约会服务。它允许用户使用滑动动作来喜欢(向右滑动)或不喜欢(向左滑动)其他用户,并允许用户在双方互相喜欢时聊天(“匹配”)。这是 icon
  • 架构决策“最简单”的解决方案是让拥有巨大大脑的人做出所有决定。这种“Megamind”方法当然有一些优势——一个人可以快速做出决定,并且有一个人负责;缺点使这些优点相形见绌。把责任推给一个人是有风险的——人并不完美(对不起!)。让我们尝试改进一下:我们可以任命一个变革顾问委员会 (C icon
  • 一个典型的面试问题:“你将如何设计一个像 Twitter 这样的系统”。 让我们看一下开始的要求。功能要求 推文 - 应该允许您发布文本、图像、视频、链接等 Re-tweet - 应该允许你分享某人的推文 跟随 - 这将是一种定向关系。 icon
  • 架构决策记录(ADR) 是一个记录重要架构决策及其上下文和后果的文档。架构决策(AD) 是解决重要需求的软件设计选择。架构决策日志(ADL) 是为特定项目(或组织)创建和维护的所有 ADR 的集合。架构重要需求( ASR) 是对软件系统架构具有可衡量影响的需求。 icon
  • Eltjo Poort 是 CGI 荷兰的架构实践负责人,在软件行业拥有超过 30 年的经验。Eltjo 首先解释了架构上下文和业务驱动程序的重要性,它们可以帮助架构师理解不同的权衡和选项,以便做出正确的架构决策。Eltjo 分享了架构师的主要职责,以及架构师应如何通过了解架 icon
  • 最小可行产品 (MVP:Minimum Viable Product) 、最小可销售产品 (MMP:Minimum Marketable Product) 与最小可爱产品 (MLP:Minimum Lovable Product )区别: icon
  • 学习如何设计可扩展系统将帮助您成为一名更好的工程师。系统设计是一个广泛的话题。网络上散布着大量关于系统设计原则的资源。此 repo 是一个有组织的资源集合,可帮助您学习如何大规模构建系统。点击标题进入 准备系统设计面 icon
  • 对于许多软件工程师来说,系统设计面试仍然是一个神秘的挑战。大多数工程师以前从未真正在大型系统上工作过,因此必须解释如何构建一个似乎令人生畏。而且因为系统设计面试的问题可以是开放式的,所以很难知道正确的准备方法。在我在 Microsoft 和 Facebook 从事分布式系统工 icon
  • 系统设计帮助我们定义满足业务需求的解决方案。这是我们在构建系统时可以做出的最早决定之一。通常必须从高层次思考,因为这些决定以后很难纠正。随着系统的发展,它还使推理和管理架构更改变得更加容易。 系统设计是为满足特定要求的系统定义架构、接口和数据的过程 icon
  • API Gateway 是一个 API 管理工具,位于客户端和后端服务集合之间。它是系统的单一入口点,封装了内部系统架构并提供为每个客户端量身定制的 API。它还具有其他职责,例如身份验证、监控、负载平衡、缓存、节流、日志记录等。 icon
  • Slack 是最著名的工作平台和团队消息传递应用程序之一。它使分布在不同地点的团队之间的沟通更加容易。目前,它已帮助全球超过 70 万家公司改善了沟通。 Slack=聊天群+65个工具集成( icon
  • 平衡反馈回路是一种机制,它抵制在一个方向的进一步变化。它以反方向的变化来对抗一个方向的变化。它试图稳定一个系统。 通常在系统中,你会发现这种平衡环路与强化反馈环路在一起,强化反馈环路的作用正好相反,会产生指数性的变化。 icon
  • 了解指数(复利)变化背后的力量。 只要环路内的行为或事件相互加强,就会发现强化反馈环路。这些环路放大了过程的效果。 这是一个口号,但你可以在你周围找到现实世界的例子。复利是一个非常常见的例子。你在银行的钱 icon
  • 系统设计对话可能非常具有挑战性。可能有很多模棱两可的地方、选项和想法——加上有限的时间和难以解决的问题。根据经验,我发现了一种通用方法,可以帮助使这些对话更有条理、更有趣、更有成效。 1. 要求和目标系统设 icon
  • “成功的软件总是会改变。” -弗雷德里克·P·布鲁克斯对于一般软件而言,同样适用于 API:成功的 API 会发生变化。原因很简单:成功的 API 被各​​种 API 消费者使用,他们需要新功能、扩展、错误修复和优化。从这个角度来看,API 的变化是不可避免的。但这只是故事的 icon
  • 在研究数据结构/算法 (DSA) 面试问题时,有一个清晰的剧本:掌握概念并始终如一地实践 icon