Skip to main content

System Design 过程中的软硬件限制

· 3 min read

在系统设计中,了解硬件资源限制、数据库性能指标和常见数据规模是至关重要的。以下是整理的关键参数和参考范围,涵盖数据规模、硬件配置、数据库性能等方面:


一、数据规模参考

  1. 文件/数据大小

    • 单条用户数据(如 JSON 记录):1 KB - 10 KB
    • 高清图片:1 MB - 5 MB
    • 短视频(1 分钟):10 MB - 100 MB
    • 长视频(1080p,1 小时):1 GB - 3 GB
    • 数据库单表容量限制:
      • MySQL/PostgreSQL:单表建议 ≤ 500GB(性能下降临界点)
      • 分布式数据库(如 Cassandra):单表可支持 PB 级
  1. 用户规模与数据总量
    • 100 万用户(中等规模):
      • 用户数据总量:1 TB - 10 TB(假设每人 10 MB 数据)
    • 10 亿用户(大型系统):
      • 用户数据总量:10 PB - 100 PB

二、硬件配置范围

  1. 单节点配置

    • CPU
      • 轻量级服务(API 网关):2-4 核
      • 计算密集型(视频转码):16-32 核
      • 云服务器上限(AWS EC2):128 vCPU
    • 内存
      • 缓存服务器(Redis):16 GB - 256 GB
      • 数据库节点(MySQL):32 GB - 512 GB
      • 大数据节点(Spark/Hadoop):64 GB - 1 TB
    • 硬盘
      • SSD(生产数据库):1 TB - 10 TB(IOPS: 10K - 100K)
      • HDD(冷存储):10 TB - 100 TB(吞吐量:100-200 MB/s)
      • 云存储(如 S3):理论上无限扩展
  2. 网络带宽

    • 单机:1 Gbps(125 MB/s) → 10 Gbps(1.25 GB/s)
    • 跨数据中心:100 Mbps - 10 Gbps(受延迟影响)

三、数据库性能指标

数据库类型读 QPS写 QPS适用场景内存需求(生产)
MySQL1K - 10K500 - 5K关系型事务(OLTP)16GB - 128GB
PostgreSQL5K - 50K1K - 10K复杂查询、GIS32GB - 256GB
MongoDB10K - 100K5K - 50KJSON 文档、高吞吐32GB - 512GB
Cassandra50K - 500K10K - 100K分布式写入、高可用32GB - 1TB
Redis100K - 1M100K - 1M缓存、实时计数8GB - 256GB
Elasticsearch10K - 50K5K - 20K全文搜索、日志分析32GB - 512GB

:QPS 受索引设计、硬件配置和查询复杂度影响极大。


四、系统设计中的关键限制

  1. 单机瓶颈

    • CPU:单线程性能瓶颈(如 Python/Node.js 的 Event Loop)。
    • 内存:Java 堆内存限制(-Xmx 参数通常 ≤ 32GB,避免 GC 停顿)。
    • 硬盘:SSD 寿命(DWPD 指标,如 1 DWPD = 每天全盘写入 1 次)。
  2. 分布式系统扩展

    • 分片(Sharding):单分片建议 ≤ 1TB(如 MongoDB)。
    • 副本(Replication):通常 3-5 副本(CAP 定理权衡)。
  3. 云服务限制

    • AWS RDS MySQL:最大 16 TB 存储、40K IOPS。
    • DynamoDB:单表无上限,但分区键热区可能限制吞吐。

五、场景示例

  • 社交网络(读多写少)
    • 缓存层(Redis):100K QPS,数据热区占 20%。
    • 数据库(MySQL):主从分离,读 QPS 10K,写 QPS 2K。
  • 物联网(写多读少)
    • 时序数据库(InfluxDB):写 QPS 50K,按时间分片存储。

六、设计原则

  1. 横向扩展优先:无状态服务易扩展,数据库分片需谨慎。
  2. 预估峰值:按 3 倍日常流量设计容量。
  3. 监控与调优:实际 QPS 可能因慢查询下降 90%。

这些数字是通用参考,实际需通过压测验证(如 JMeter)。