首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >系统设计与系统架构

系统设计与系统架构
EN

Stack Overflow用户
提问于 2022-08-12 20:59:15
回答 1查看 238关注 0票数 0

我见过许多系统设计的例子。例如,在系统设计面试中为Twitter设计URL缩写。

那么,什么是系统架构呢?

这两件事是一样的吗

EN

回答 1

Stack Overflow用户

发布于 2022-08-13 13:56:48

不,他们不一样,但他们是亲戚。

系统设计是试图根据所提供的需求提出可行的解决方案(或多个解决方案)的过程。您尝试指定具有定义良好的责任的较小组件。此外,您还定义了它们是如何(以及何时)相互作用的。

系统架构是前一个过程的产物。它描述了如何将问题空间划分成更小的块,以及您的组件作为一个整体如何尝试解决原来的大问题。

更新#1:提供示例

为了更好地说明不同之处,让我提供一个超级简化的例子。

上下文

假设您有一堆微服务,其中一些服务有时会被滥用。在资源滥用期间,服务变得缓慢和没有响应性。

为了缓解这一状况,企业决定引入速率限制。

设计

这些步骤被简化和简化,以便于理解。

  1. 向企业澄清它们是指请求排队还是节流。
  2. 在术语上一致倾向于限速而不是节流
  3. 对工业标准算法和数据结构做了一些研究。
  4. 漏桶令牌桶的比较
  5. 检查是否有可满足所有需求的现有解决方案。
  6. 决定应该保护哪些端点
  7. 记录你的发现和决定

工件

  • 选择的库/库可以满足一个或多个概念证明来验证所有需求
  • 一个体系结构决策记录,用于捕获在速率限制情况下应在哪种编程语言中使用哪个库。
  • 另一种记录客户端应如何处理速率限制的ADR
    • 例如:如果他们收到了429个响应代码,他们应该重试请求,并尊重retry后标头。

  • 更新体系结构图以指示哪些服务使用限制速率的
    • 或者引入API网关,使其有一个集中的地方来解决共同的问题。

  • 如何设置速率限制规则的规范
    • 类似: 100 reqs / min,1000 reqs /小时

更新#2:反映OP的示例

假设我正在设计tinyUrl,如果我正在进行系统设计,我将执行以下操作:

  1. 我收集需求
  2. 我将检查使用的估计数,如流量和带宽。
  3. 基于此,我可以有一个数据库模式,
  4. 我将根据数据库模式检查存储。
  5. 我将为我的系统创建API
  6. 创建抽象系统流ex)客户端->应用程序->服务器->数据库
  7. 考虑数据分区和复制以适应延迟、可用性和可靠性。
  8. 检查可能的缓存使用情况
  9. 最后,在系统中做一些更详细的数据流。例如,使用负载平衡。

与系统架构相同的示例将更多地涉及实现细节,我将选择使用哪种技术?

如前所述,系统设计是过程,而系统架构是设计过程的结果。您所描述的是过程,它可能/可能不包括技术选择。

  • 在与组件相关的特性设计中,您可能希望将建议的技术/库也包括在系统架构中。
  • 在集成设计中,您将更多地关注通信协议、边缘情况、安全性等。

让我试着从另一个角度来捕捉这个差异。每当您为某个特定问题设计解决方案时,您就会探索不同的备选方案,并尝试根据需求明智地进行选择。您所建议的体系结构捕获了您的设计,以便能够对系统进行推理。但这是有生命的东西。随着新需求的出现,它可能会随着时间的推移而改变。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73339739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档