🖥️ 第一章 服务器基础知识
📄 一句话概括

系统里除了"谁先开口""算得多重",还有一个决定怎么配机器的变量——客户端的负载形状:平时几乎为零、瞬间挤爆的是爆发系,长期平稳满载的是持久系,两者的设计取向完全相反。而要把这些讨论清楚,得先把系统画成一张图,这就是模型化——它是全书的工作台。

📝 本篇覆盖教材三小节
  • 爆发系与持久系(是爆发系还是持久系)
  • 模型化(将系统模型化进行整理)
  • 系统(基本的系统结构)

1. 客户端的两种脾气

同样是客户端,负载的"形状"完全不同:

爆发系(burst) 持久系(persistent)
负载形状 平时几乎为零,某个瞬间挤爆 长期平稳、一直满载
典型场景 秒杀、抢票、开学选课、年会抽奖 监控录像、AI 训练、批处理、7×24 服务
峰值 ÷ 平均 几十倍到上百倍 约等于 1
设计取向 弹性:临时加机器顶上,峰值过了就撤 稳定:配置一次到位,长期扛住

同一个系统里的客户端,也可能两种脾气并存:白天员工在用(温和持久),晚上批量结算(爆发)。

2. 为什么要分这两类

因为设计取向完全相反,配错了就是两边都花钱:

还有一个更实在的理由:它决定了钱花在哪儿。

判断一个新系统该怎么配,第一步就是问:它是爆发系还是持久系?——这个问题不回答,后面所有选型都是猜。

3. 模型化:把系统画成图再讨论

模型化 = 用简化的方框和箭头代表真实系统。

关键不是画得漂亮,而是把不重要的细节先扔掉:一堆服务器只画成一个方框、几百台客户端只画成一行箭头——因为此刻要看的是"谁连谁",而不是"哪台机器放在哪个机柜"。

📝 抽象不是偷懒

网络 2.1 讲过"画一朵云代表整个互联网"——那是同一个道理:抽象是为了抓住当前要讨论的那一层,把别的先盖上。

4. 模型化至少要能回答三个问题

不是画完就算,画完的图要能拿去"算":

问题 用来干什么
谁连谁 说清结构与依赖,一眼看到影响面
哪里最慢 找瓶颈——往往不是最贵的那台
要几台够 算容量:按峰值算要几台、按平均算要几台

这三个问题的答案,直接变成决策:要不要加机器、要不要上云、这笔钱花在哪。

收一笔旧账:网络 2.6 把网络图分成物理图与逻辑图——正是模型化在网络层面的落地。本课往后每一章(存储、备份、冗余、云),基本都在往这张图上添零件。

5. 收束:系统的基本结构

把本章全部内容串成一条线:

客户端(PC / 设备)  →  网络  →  服务器(司令塔)
   发起请求                       处理并返回
      ↑                              |
      └────────── 响应 ──────────────┘

四个变量,各管一件事:

变量 决定什么
谁先发起(被动 / 主动) 流量的方向
算得多重(普通 / 高性能) 机器的规模
客户端脾气(爆发 / 持久) 容量的配法
把它们画成图(模型化) 讨论的共同语言

这就是"系统"最基本的骨架,也是本章标题"作为司令塔的三种形态"的完整展开。

💡 本章的三种形态说到底

被动式(你问它答)· 主动式(它自己找你)· 高性能(算得特别重)。 前两种讲方向,第三种讲分量——它们是三个可以同时存在的维度,不是三选一。

6. 动手时间(Demo03):看负载的形状,画自己的系统图

第一步:看你这台机器的负载长什么样。

# 1. 连续采 10 秒 CPU 使用率,看曲线是"尖峰"还是"高原"
Get-Counter '\Processor(_Total)\% Processor Time' -SampleInterval 1 -MaxSamples 10 |
    Select-Object -ExpandProperty CounterSamples |
    Select-Object CookedValue

# 2. 谁在长期吃 CPU(持久系的嫌疑犯)
Get-Process | Sort-Object CPU -Descending | Select-Object -First 6 Name, CPU, WS

# 3. 本机开机多久了(7×24 的雏形)
(Get-CimInstance Win32_OperatingSystem).LastBootUpTime

第二步:给自己的一个真实场景画模型图。

拿你熟悉的一件事练手(比如"公司同事查看项目图纸"):

  1. 画三类方框:客户端(谁在用、用什么设备)、网络(局域网?外网?)、服务器(提供什么服务);
  2. 连箭头,标出请求方向(被动还是主动);
  3. 在每条线上写一个数:并发大概多少 / 峰值大概多少;
  4. 最后回答三个问题:谁连谁、哪里最可能最慢、高峰要几台够。
💡 画完再回看这一个问题

你这个场景是爆发系还是持久系?——比如"上班时间大家看图纸"是温和持久型,"周一早上全公司同时开图纸"就带爆发性质。这个问题一回答,容量怎么配基本就有了方向。

7. 30 秒实验

  1. 实验 1(负载形状):打开任务管理器看 CPU 曲线——平时几个小尖点,你压一个大文件时瞬间冲顶,这是爆发系的形状;而监控录像那种 7×24 的负载,曲线会像一条不动的粗线,那是持久系。
  2. 实验 2(峰值 vs 平均):回忆一次抢票或选课——平时这个网站有多少人访问?开抢那一秒呢?两个数字差多少倍,那就是它的"峰值倍数"。
  3. 实验 3(模型化三问):随手挑一个你天天用的系统(公司考勤、外卖 App),用 30 秒回答:谁连谁?哪里最慢?要几台够?

8. 常见误区

  1. 以为模型化就是画个好看的框图——它的目的是算容量、找瓶颈、做决策。画完回答不了这三个问题的图,等于没画。
  2. 以为"平均负载不高"就不用担心——爆发系恰恰是平均很低、峰值致命。按平均配机器,秒杀那天必崩。
  3. 把爆发系和持久系当成"系统类型"——它是负载的特征。同一个系统白天持久、晚上爆发,两种脾气并存。
  4. 以为持久系只要"机器好"就够了——散热、电费、机房承重、维护窗口都是它的成本项,"一直满跑"对硬件的消耗和爆发系完全不是一个量级。
  5. 把"系统"等同于一台服务器——系统 = 客户端 + 网络 + 服务器(还要加上数据和用系统的人),少一环就不成系统。

9. 折叠自测题

❓ Q1:爆发系和持久系最大的区别是什么?各举一个例子。

区别在负载形状:爆发系平时几乎为零、瞬间挤爆(秒杀、抢票、选课);持久系长期平稳满载(监控录像、AI 训练)。前者要弹性,后者要稳定。

❓ Q2:什么是模型化?它至少要能回答哪几个问题?

用简化的方框 + 箭头代表真实系统。至少要能回答:谁连谁(结构)、哪里最慢(瓶颈)、要几台够(容量)——并据此做决策。

❓ Q3:"三种形态"分别回答什么问题?它们是三选一吗?

被动式与主动式回答"谁先开口"(方向),高性能形态回答"算得多重"(分量)。不是三选一——它们是三个可以同时存在的维度,比如一个 AI 服务对外是被动式,内部是高性能,还会主动推送告警。

❓ Q4:本章四个变量各决定什么?

谁先发起 → 流量方向;算得多重 → 机器规模;客户端脾气(爆发/持久)→ 容量配法;模型化 → 讨论的共同语言。

10. 下一步学什么

相关笔记