🖥️ 第三章 服务器是做什么用的
📄 一句话概括

服务器不是"想买就能买"的,它是从系统里推导出来的结论。这一篇讲清动手买机器之前必须算的三笔账:① 先把系统画清楚(谁是客户端、谁干什么活)→ ② 用系统模型预估性能(多少人同时用、峰值多高)→ ③ 算投资回报(有没有更轻的替代、养它要花多少)。顺序错了,钱就白花。

📝 本篇覆盖教材三小节
  • 系统与服务器(首先是系统,然后才是服务器)
  • 性能预估与定制(系统模型决定了系统架构)
  • 投资与回报(真的有必要使用服务器吗)

1. 先立顺序:从"系统"出发,而不是从"服务器"出发

教材把这节放在第三章开头,是有意为之——上一章讲完硬件,很容易让人产生"我要买一台什么样的服务器"的冲动;而正确的第一句话应该是"我这个系统要干什么"。

链条是这样的:

业务需求 → 系统模型 → 性能预估 → 服务器选型

反过来做(先选型再想用途)会出两种错:

反着做的结果 症状
买小了 上线三个月就卡,重新采购、迁移、停机
买大了 一半的 CPU 和内存常年闲着,钱和电费照付
💡 这一节真正想说的是

服务器是系统的产物,不是系统的起点。 系统变了,服务器就该跟着变;没想清系统的人,买什么配置都是赌。

2. 系统与服务器:先把"系统"两个字说透

第一章 1.1-1.3 已经钉过定义:系统 = 客户端 + 网络 + 服务器,三者缺一不成系统。

服务器在里面扮演什么角色?回想"司令塔"三个字:

所以"先是系统,然后才是服务器"这句话,落成一句可操作的话是:

先回答"谁、通过什么、来干什么",服务器的配置自己会浮出来。

举一个跟你行当贴边的例子——设计院的图纸共享:

系统需求演进 服务器形态跟着变
只是"大家能拿到同一份图" 一台 NAS(网络存储)就够,它也是服务器
加上"版本管理 + 谁能看哪本图 + 修改留痕" 需要应用服务器 + 数据库服务器,NAS 变成它的存储后端
加上"外网给甲方看进度、现场用手机看图" 再加反向代理 + 数字证书(网络 7.8 的那套盔甲)
加上"模型渲染、算量" 再加计算型 / GPU 服务器(第一章 1.4-1.6 的高性能形态)

同一个"图纸共享",四步下来服务器的台数和类型完全不同——变的不是服务器,是系统。

3. 系统模型:把系统画成"能算"的图

第一章 1.7-1.9 讲过"模型化",这里给出具体标准:模型不是画给人看的,是画给"算"用的。

一张合格的系统模型图,必须写清四件事:

要素 要写什么 漏了会怎样
角色 哪些人、哪些设备、各多少个 不知道并发从哪来
连线 谁连谁、走内网还是公网 不知道瓶颈在带宽还是在算力
动作 每条连线上跑什么、一次传多少数据 不知道是 CPU 密集还是 I/O 密集
时点 什么时候最忙(早会前?月底出图?) 只能按平均值估算,一遇峰值就崩
💡 本书网络课的同一思路

网络 2.5「如何构建网络(网络的设计)」、2.6「明确网络的结构(网络结构图)」讲的是同一件事:动手拉线之前,先在纸上把结构画出来。

4. 性能预估:从模型算出"要多大"

模型画完,就可以算容量了。性能预估不是拍脑袋,是三个数的乘法:

① 并发数 = 总人数 × 同时在线比例 ② 请求速率(QPS) = 并发数 ÷ 每个请求之间的间隔 ③ 需要的核数 = 峰值 QPS ÷ 单核算力

单核算力怎么来?1000 ÷ 单请求占用毫秒数——比如一条请求占用服务器 200 毫秒,一个核一秒就能处理 5 条。

举个完整例子(60 人的小团队):

关键结论:按峰值定容量,按平均值算成本。

⚠️ 三个"永远不要忘"
  1. 留余量:算出来 4 核,就该配 6~8 核(业界通常留 30%~50%)。算得刚刚好=等待故障。
  2. 别只算 CPU:2.1~2.3 讲过,服务器的瓶颈常常在 I/O——磁盘 IOPS、内存、网络。CPU 闲着的系统照样卡。
  3. 算上增长:按"三年后"的规模配置或预留扩展位。数据库、图纸库这类只增不减的数据尤其如此。

5. 定制:需求决定架构,架构决定配置

"定制"两个字不是挑品牌、选颜色,而是——把瓶颈找出来,给它加料。

业务形态 真正的瓶颈 服务器该往哪加料
文件共享 / 图纸库 存储容量 + 网络带宽 大容量磁盘阵列 + 万兆网卡
数据库 磁盘 IOPS + 内存 NVMe SSD 阵列 + 大内存 + 多核
Web / 接口服务 网络 + CPU 并发 多台小机器 + 负载均衡(不是一台巨无霸)
AI 训练 / 推理 GPU 算力 GPU 服务器(第一章 1.4-1.6 的高性能形态)
视频转码 编解码单元 高主频多核或带硬件编解码的 GPU
日志 / 监控存储 写入吞吐 + 容量 顺序写入优化的大容量廉价盘

同一笔钱,花在瓶颈上叫定制,花在别处叫浪费。

6. 投资与回报:真的有必要用服务器吗

买之前先问自己四个问题:

  1. 现在哪儿不够用?——说不出具体痛点,就不必买。
  2. 有没有更轻的替代?——NAS、云盘、SaaS、托管机房,很多需求根本不需要"一台服务器"。
  3. 谁来维护它?——买机器只是开始。没人的话,它就是个定时炸弹。
  4. 停一天,损失多少?——这个数直接决定你该买"几个 9"(2.1~2.3 的可用性阶梯)。

总拥有成本(TCO):买机器只是第一笔

成本项 内容 常被忽略的程度
采购 服务器本体、硬盘、内存、机柜、UPS 最容易被想起来的一项
软件许可 操作系统、数据库、备份软件的授权费 很容易漏
场地与托管 机房空调、机柜租金、托管费 自建机房时最贵
电费 7×24 运行,服务器功耗远高于 PC 长期算下来很扎眼
维保 原厂保修到期后的续保、备件 常按"不买也能跑"处理
人力 运维、备份、补丁、巡检 最贵的一项,也最容易漏
隐性 培训、迁移、报废处理 全靠经验

回报怎么算

服务器的回报不体现在"它帮我赚了多少钱",而体现在省下的工时和避免的损失:

7. 什么时候不该买服务器

这一节教材的标题是一个问句,答案就藏在问句里——"真的有必要吗"是每次都要重新回答的问题。

不该买的信号:

该买的信号:

💡 结论不是"买"或"不买",而是"哪部分留在内网、哪部分上云"

这就是 2.8~2.12 讲过的混合云:核心资料和业务系统自建(可控、合规),弹性需求和临时项目上云(便宜、灵活)。决策的依据不是技术先进,而是数据敏感度和使用规模。

8. 动手时间(Demo07):给一个真实场景算容量

60 人的小团队要上一个图纸共享系统,先算算需要多少核。把下面这段贴进 PowerShell 就能跑:

function Estimate-Capacity {
    param(
        [int]$Users = 60,            # 总人数
        [double]$OnlineRatio = 0.3,  # 同时在线比例
        [int]$ThinkSeconds = 3,      # 每人多少秒产生一次请求
        [int]$ServiceMs = 200,       # 每条请求占用服务器多少毫秒
        [double]$PeakFactor = 3      # 峰值系数(繁忙时段是平均值的几倍)
    )
    $concurrent = [math]::Ceiling($Users * $OnlineRatio)
    $qps        = [math]::Round($concurrent / $ThinkSeconds, 2)
    $peakQps    = [math]::Round($qps * $PeakFactor, 2)
    $perCore    = [math]::Round(1000 / $ServiceMs, 1)
    $cores      = [math]::Ceiling($peakQps / $perCore)
    [pscustomobject]@{
        '同时在线(人)' = $concurrent
        '平均每秒请求'   = $qps
        '峰值每秒请求'   = $peakQps
        '单核每秒能力'   = $perCore
        '按峰值需要核数' = $cores
        '留 50% 余量后'  = [math]::Ceiling($cores * 1.5)
    }
}

Estimate-Capacity

然后动手改参数,做三次对比:

# 情景一:60 人,平稳使用
Estimate-Capacity

# 情景二:人数涨到 300(公司规模扩大 5 倍)
Estimate-Capacity -Users 300

# 情景三:还是 60 人,但每条请求变重(报表/渲染,占 2 秒)
Estimate-Capacity -ServiceMs 2000

观察点:

  1. 人数翻 5 倍,核数也大致翻 5 倍——容量问题基本是线性的,先算清楚总比事后猜强;
  2. 情景三最值得盯:人数没变,只是"活变重了",需要的核数却暴涨 10 倍。这就是"定制"的含义——先看活有多重,再决定机器多大。
  3. 注意最后一行"留 50% 余量"和"需要核数"的差距——真实采购看的是余量那一行。

9. 30 秒实验

  1. 实验 1(系统先于服务器):打开你手机上任意一个 App,用纸笔写下它的"客户端 / 网络 / 服务器"三格。写不满三格说明你还没想清它是什么系统。
  2. 实验 2(家里的服务器):数一数家里有几台设备在"等着被访问"——路由器后台、NAS、网络摄像头录像机、智能音箱。它们都是服务器,只是没人这么叫。
  3. 实验 3(峰值思维):回想你所在场景的"最忙时刻"(出图前夜?季度末?),判断它比平时忙几倍——这个倍数就是性能预估里的峰值系数。

10. 常见误区

  1. "先把服务器买了,用途慢慢想"——顺序反了。买完才发现配置不对,损失的不只是钱,还有迁移和停机的时间。
  2. "性能预估就是拍脑袋估个大概"——它是可算的:并发数 × 请求速率,再除单核算力。第 8 节的 Demo 就是完整算例。
  3. "按平均负载买就够了"——平均值决定成本,峰值决定容量。系统崩的时候永远是峰值那一刻。
  4. "买机器是一次性投入"——TCO 里采购只是一小部分。电费、许可、维保、人力才是长期大头,其中人力最容易漏算。
  5. "云一定比自建贵"或"云一定比自建便宜"——两个都错。看规模和使用时长:规模大、用得久、负载稳定 → 自建更划算;规模小、需求多变 → 云更划算(3.1-3.3 篇的曲线图)。
  6. "服务器买回来就完事了"——它是要养的。备份、打补丁、看监控、换坏盘,缺了这些,服务器反而变成最大的风险点。

11. 折叠自测题

❓ Q1:为什么说"首先是系统,然后才是服务器"?

因为服务器在系统里扮演的角色是"应答 + 分发"的一方,它的配置完全由"谁、通过什么、来干什么"决定。需求变了(加权限、加外网访问、加计算任务),服务器台数与类型就跟着变。先选型再想用途,要么买小了重买,要么买大了闲置。

❓ Q2:一张"能算"的系统模型图必须写清哪四件事?

① 角色(哪些人/设备、各多少);② 连线(谁连谁、走内网还是公网);③ 动作(每条连线上跑什么、数据量多大);④ 时点(什么时候最忙)。缺第 ④ 项就只能按平均值估算,一遇峰值就崩。

❓ Q3:性能预估的完整算法链条是什么?为什么按峰值定容量?

并发数 = 总人数 × 同时在线比例 → QPS = 并发数 ÷ 请求间隔 → 需要的核数 = 峰值 QPS ÷ 单核算力(1000 ÷ 单请求毫秒数)。按峰值定容量是因为系统崩的时刻永远是峰值;平均值只用来算成本(云按量付费、电费估算)。

❓ Q4:服务器的 TCO 包含哪些?什么时候不该自建服务器?

TCO = 采购 + 软件许可 + 场地托管 + 电费 + 维保 + 人力 + 隐性(培训/迁移/报废)。不该自建的信号:只有一个人用、需求还在天天变、团队里没有能维护它的人、业务量小且平稳(现成 SaaS 更便宜)。该自建的信号:数据不能出内网、并发高且长期稳定、需要深度集成。

12. 下一步学什么

相关笔记