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

司令塔不只会"等你来问",还会自己找上门(主动式:时间到了或事情发生了);有些活还特别重,一台机器扛不住(高性能形态:AI 与大数据)。而站在它对面被服务的,除了你的电脑,还有一大群没有屏幕的机器。

📝 本篇覆盖教材三小节
  • 主动式运用形态(在服务器端执行主动式处理的形态)
  • 人工智能与大数据(执行高性能处理的形态)
  • 客户端 PC 与设备(连接服务器的机器)

1. 为什么需要主动式

被动式有个前提:客户端知道该什么时候问。但现实里大量事情,客户端根本不知道该在什么时候问——

所以服务器还能主动发起处理。这就是第二种运用形态。

2. 主动式的三类典型动作

类型 触发的东西 例子
推送通知 事件发生 新邮件、新消息、App 弹窗、软件更新提示
定时任务 时间到了 半夜自动备份、每天早上 8 点生成报表
告警 越过阈值 CPU 超过 90% 立刻喊人、磁盘快满了发短信

生活比喻:物业主动贴通知说"周三停水"、天气 App 提前推给你"明天有暴雨"——不等你问,因为它知道你不知道。

一句话记住:主动式 = 事件 / 时间驱动。触发它的不是客户端,而是时间到了或事情发生了。

⚠️ 主动 ≠ 想推什么就推什么

主动处理必须有明确的业务规则与授权:推送要有订阅关系(用户同意接收)、告警要有阈值定义、定时任务要有计划配置。没有规则的"主动"不是服务,是骚扰。

3. 两种形态在现实里是混着用的

别把它们当成二选一。你手机上的每个 App 基本都在混用:

代价要看清:主动式比被动式"贵"。被动式的服务器不用记住谁是谁;主动式要推送,服务器就得知道谁现在在线、推到哪个地址去——这是推送服务、长连接(WebSocket)这类技术存在的原因。第三章讲虚拟化、后面讲负载均衡时会再遇到这层复杂度。

4. 第三种:人工智能与大数据(高性能形态)

前面两种回答的是同一个问题:"谁先开口"。

第三种回答的是另一个问题:"算得多重"。

这些活,一台机器扛不住,所以要一群机器一起算(集群、GPU 阵列)——这正是它被单独拿出来当一种形态讲的原因:它的规模量级和前面两种不在一个世界。

⚠️ 别把"高性能"理解成"更快"

是"更重",不是"更快"——是规模、并行、算力的问题,不是把同一件事做得更快的优化问题。 而且 AI 服务对外多半还是被动式(你提问、它回答)。形态讲的是"处理的规模和方式",跟"谁先开口"是两个维度,可以叠加。

💡 一张表看全三种形态
形态 回答的问题 触发/特征
被动式 谁先开口 客户端请求
主动式 谁先开口 时间 / 事件
高性能 算得多重 集群、GPU、长时运行

5. 客户端 PC 与设备:连接服务器的机器

客户端 = 所有连到服务器上、使用它提供的服务的机器。

教材把它们分成两类:

类型 例子 特点
有人操作的 PC、笔记本、手机、平板 人要动手指才有请求
没人操作的 摄像头、传感器、打印机、扫码枪 自己定时上报,人不用管

两类都算客户端,这一点新手最容易漏:没有屏幕的机器也是客户端,而且在物联网、监控、工业场景里,它们的数量远超电脑。

📝 收一笔旧账

网络 1.5 讲过 C/S 与 P2P 两派——C/S 就是"一个轴心 + 一圈客户端",本篇讲的正是那个轴心的另一头。 这也解释了一件事:为什么说服务器是"中枢"——客户端的数量与种类可以无限扩张,轴心只有一个。客户端的形态越杂(电脑、手机、摄像头、扫码枪),对服务器"同时应付各种脾气"的要求就越高。

6. 动手时间(Demo02):在你这台电脑上看"主动式"和"算力底座"

主动式不用装软件,Windows 自己就在大量使用它。

# 1. 主动式 · 时间驱动:本机排了哪些"到点自己跑"的任务
Get-ScheduledTask | Where-Object { $_.State -eq 'Ready' } |
    Select-Object -First 6 TaskName, TaskPath

# 2. 主动式 · 事件驱动:系统日志里"发生了才记一笔"的条目
Get-WinEvent -LogName System -MaxEvents 5 |
    Select-Object TimeCreated, LevelDisplayName, ProviderName

# 3. 后台常驻的"小服务器":无人值守、开机就自己跑
Get-Service | Where-Object { $_.Status -eq 'Running' } |
    Select-Object -First 10 Name, DisplayName

# 4. 高性能形态的算力底座:几核、有没有独显
Get-CimInstance Win32_Processor | Select-Object Name, NumberOfCores, NumberOfLogicalProcessors
Get-CimInstance Win32_VideoController | Select-Object Name

观察点:

  1. 第 1 条会列出一堆计划任务(Windows 更新检查、磁盘清理、各种后台维护)——没有人在点它,它到点自己就跑,这就是主动式。
  2. 第 2 条看到的是事件日志:不是每隔一秒记一次,而是"出事了才记"(服务启动失败、硬盘告警)。这正是"事件驱动"的字面意思。
  3. 第 3 条会看到几十个 Running 的服务——它们全都无人值守,开机就自己起来。哪个端口在 LISTENING(Demo01 看过),背后就是这些服务里的某一个。
  4. 第 4 条是"高性能"的现实起点:你的 CPU 有几核、有没有独立显卡。AI 训练之所以要 GPU 集群,就是把这行数字乘以成百上千倍。
💡 看不懂 TaskPath 怎么办

那一列是任务的分类路径(如 \Microsoft\Windows\UpdateOrchestrator)。随便挑一个到任务计划程序(taskschd.msc)里搜一下,能看到它的触发器——"每天几点"或"发生某事时"。触发器就是把主动式讲清楚的那个零件。

7. 30 秒实验

  1. 实验 1(被动 vs 主动):手机下拉通知栏——那些"你没问就跳出来"的条目是主动式;再点开一个 App 手动下拉刷新,那一下是被动式。同一个 App,两种形态并存。
  2. 实验 2(找一台无屏客户端):环顾四周,找出至少三台"没有屏幕却在联网"的设备(路由器、智能音箱、监控摄像头、打印机、门禁)。它们都在向某台服务器上报——它们都是客户端。
  3. 实验 3(算得多重):打开任务管理器,跑一次大文件压缩或视频导出,看 CPU 曲线冲顶;再想想 AI 训练要连续跑几天的负载——同一个"100%",持续时间差了三个数量级。

8. 常见误区

  1. 以为主动式就是服务器想推什么推什么——必须要有业务规则与授权(订阅、阈值、定时计划),否则不是服务是骚扰。
  2. 把"高性能"理解成"更快"——是更重:规模、并行、算力,而不是把同一件事做快一点。
  3. 以为 AI 服务是"第四种形态"——它对外通常仍是被动式(你提问、它回答),只是背后的算力是高性能形态。两个维度,别混。
  4. 以为客户端就是电脑和手机——没有屏幕的设备(摄像头、传感器、打印机、扫码枪)同样是客户端,而且数量更多。
  5. 以为主动式不需要客户端配合——推送要客户端注册并保持可达(在线、有地址、有订阅),否则服务器不知道往哪儿送。

9. 折叠自测题

❓ Q1:主动式和被动式的分界线是什么?各举一个你每天都在用的例子。

分界线是谁先发起。被动式=请求驱动(打开网页、搜索、下拉刷新);主动式=服务器先发起(邮件到达提醒、天气推送、系统更新提示)。

❓ Q2:主动式有哪几类典型动作?

推送通知(事件驱动)、定时任务(时间驱动)、告警(越阈值)。共同点:客户端没开口。

❓ Q3:"AI 与大数据"这一形态和前面两种是什么关系?

回答的是另一个维度的问题:前两种说"谁先开口",这一形态说"算得多重"。它通常表现为大集群、长时间运行,对外仍然可能是一个被动式服务。

❓ Q4:为什么说"没有屏幕的机器也是客户端"?

因为客户端的定义是连到服务器上、使用它提供的服务,与有没有屏幕、有没有人操作无关。摄像头、传感器、扫码枪都在向服务器上报或取数据。

10. 下一步学什么

相关笔记