系统设计 System Design -1-功能性要求 vs. 非功能性需求

50 阅读1分钟

系统设计

简介

系统设计面试:技术+权衡+沟通+实操

功能性要求 vs. 非功能性需求(面试中应平衡两者)

  • 功能性要求:系统应该做什么

    例:电商网站应该允许用户浏览产品,将其添加到购物车并完成购买

  • 非功能性要求:系统应该如何做

    例:可拓展性,正确处理用户增长;性能:规定时间内处理交易

大致流程:明确需求->确定优先级->权衡->使用真实案例->平衡

估算

  1. 负载估算: 预测系统每秒预期的请求数、数据量或用户流量。
  2. 存储估算: 估计处理系统生成的数据所需的存储量。
  3. 带宽估算: 确定支持预期流量和数据传输所需的网络带宽。
  4. 延迟估计: 根据系统的架构和组件预测系统的响应时间和延迟。
  5. 资源估算: 估计处理负载和维持所需性能水平所需的服务器、CPU 或内存的数量。

延迟类比:

  • L1 缓存访问(0.5ns) :相当于从你的口袋里拿出一张卡片。
  • 内存访问(100ns) :相当于走到隔壁房间拿东西。
  • 磁盘随机访问(10ms) :相当于从城市的另一端驱车取物品。
  • 网络延迟(100ms) :相当于从一个国家飞到另一个国家。

image.png