服务器「云」在哪里

为什么需要

百家菜是本课程虚构的家常菜谱网站。站长没有自己买(一直开着、等别人来要东西的电脑),而是租了一台,人们把这叫作「放在云上」。你平时说的「云」,可能是手机里存照片的网盘,也可能是天上的什么东西。这样想的人不少:2012 年的一项调查问了 1,004 人,51% 以为恶劣天气会干扰云。

怎样做

第 1 章说过机房:集中摆放许多台电脑、供电和网络都很稳定的房间。集中摆放大量服务器的场所叫(data center),常常是一整栋楼,除了一排排服务器,还有稳定的电力、冷却、网络和安保。(cloud)通常指按需租用别人数据中心里的电脑和服务:要用就开,不用就关,用多少付多少。美国国家标准与技术研究院 2011 年给它下的定义,大意是:通过网络,随时从许多人共用的一大批机器、存储和网络里取用一份,要多少很快就能分到多少,用完很快交还。网盘只是云上的一种服务,百家菜租的服务器是另一种。

云由遍布世界的数据中心组成。亚马逊旗下出租电脑和在线服务的 AWS,有一项存放文件的服务叫 S3:2026 年 3 月,它分布在 39 个地区,每个地区都有好几处数据中心,存着超过 500 万亿份文件。

租一台和自己买一台,差别在哪里?在下图里比一比两种做法的准备时间和花费。

自己买还是在云上租:准备时间和花费

先看这里调节「要用多久」(滑块、预设或微调按钮都可以),找出从第几个月起,自己买开始比租省钱。

12 个月
预设

两栏对比的示意:左边是自己买,右边是在云上租。每栏写着准备时间,画着前期花费和每月花费的两根柱子,最下面是合计。

自己买

  1. 下单
  2. 等交货、装好、接上网
  3. 上线
准备时间:约 1 个月
前期:买机器
2,400 美元
每月:电费、网费、放机器的地方
每月 20 美元

12 个月合计:2,640 美元

在云上租

  1. 选好配置
  2. 开机
准备时间:约 1 分钟
前期:不用付
0 美元
每月:月租
每月 100 美元

12 个月合计:1,200 美元

用 12 个月:在云上租合计 1,200 美元,比自己买的 2,640 美元少,租更省。

别忘了准备时间:自己买的那一个月里机器还没到,百家菜还上不了线;租的一分钟就能用。

图里的价钱和准备时间都是示意,不是真实报价;真实的差别要按具体的配置和用量一项一项比。

所以,用量起伏大、刚起步、只用一阵子,租更划算;用量长期稳定、规模又大,自己买可能更省。用量起伏大时,自己买得按高峰备够机器,平时多出来的那些闲着也照样花了钱;租的可以在高峰时多开几台,过后关掉,只为用到的时间付钱。租还快:要多一台,不必等交货,很快就能开起来。

云厂商手里是一台台很强的实体服务器,你租到的「一台电脑」,多半是从中分出来的一份:用软件把一台大电脑分成几台互不干扰的「小电脑」,每一台叫一台(virtual machine)。它用的是真实的、和,各自装着一整套(operating system),即管理硬件、让各个程序共用它的那一层软件,比如手机上的安卓、电脑上的 Windows。操作系统里直接跟硬件打交道的那一部分叫(kernel)。它和处理器的「核心」名字相近,却是两回事:内核是软件,核心是处理器里的硬件。

只想把几个程序分开运行,还有更轻便的办法:(container)。它把一个程序和它要用的文件打包在一起,与别的程序隔开;同一台机器上的几个容器共用这台机器的内核,不必各带一整套操作系统。这里的容器不是瓶子、箱子,而是打包、隔开程序的一种方式。在下图里调节程序的个数,比一比两种做法。

虚拟机和容器:每个程序各带一套操作系统,还是共用一套

先看这里选要分开运行几个程序,看两幅图里操作系统那一层各有几套。

要分开运行的程序

用虚拟机

操作系统
操作系统:3 套,每台虚拟机各 1 套
每个程序随身带
一整套操作系统,连同内核。例如 Ubuntu 为云上虚拟机准备的整份镜像,约 621 MB
启动时要做的事(长短只是示意)
启动操作系统启动程序

用容器

操作系统
操作系统:只有机器上的 1 套;容器不带内核,也不各带一整套
每个程序随身带
程序和它要用的文件,不带内核。例如 Alpine Linux 给容器打底的最小镜像,不超过 8 MB,还不含你的程序
启动时要做的事(长短只是示意)
启动程序

镜像是装好了软件、拿来就能用的一整份文件;Ubuntu 和 Alpine Linux 都属于 Linux,服务器上常用的一类操作系统。两个大小不是同类:Ubuntu 那一份能直接开机,连同内核;Alpine 给容器打底的那一份只有程序要用的一些基本文件,没有内核。左图只算每台虚拟机里各带的操作系统;把机器分成几台虚拟机的那层软件没有画出来,有的机器为了运行它,自己还另装一套操作系统,也没有算进去。

两者常常一起用:在云上租到的多半是一台虚拟机,在里面再跑好几个容器,同样的硬件就能多跑几个程序。

不管是实体机器还是虚拟机,在一组相连的机器里,每一台常被叫作一个(node);图上的一个框,有时也叫一个节点。

代价是什么

租的代价首先是钱。用量长期稳定、规模又大时,租可能比买贵:做在线办公软件的 37signals 公司 2024 年说,它把程序从 AWS 搬到自己买的服务器上,买服务器约花了 70 万美元,每年的云账单从 320 万美元降到 130 万美元;剩下的是按合约存文件的费用,2025 年合约到期后,它把大部分文件也搬了出来。

上了云也不等于不会出故障:单个节点会坏,整个数据中心也会断电、断网。第 4 章和第 8 章讲怎样把节点和数据分散到几处,一处出事不至于全部停下。

虚拟机和容器也各有代价。每台虚拟机都带着一整套操作系统,占地方,启动时也要先把它启动起来;只为隔开一个小程序就开一台,很浪费。容器轻便,但几个容器共用一个内核,彼此隔得没有虚拟机那么严:一个容器里的程序有恶意或者出了错,更容易影响到同一台机器上的其他容器。AWS 的工程师在 2020 年的论文里写道,许多客户的程序放在同样的机器上,既要隔得严,又要轻便;为此他们做了很轻的虚拟机 Firecracker,只保留必需的几样设备,启动不到 125 毫秒。可见虚拟机启动慢,是因为一般的虚拟机要启动的东西多。

资料来源

以下资料均于 2026-10-22、2026-10-23 和 2026-10-25 访问。

  1. Survey: 51 percent think 'stormy weather' interferes with online cloudDevin Coldewey,NBC News,2012-08-28
  2. What is a data center?AWS,未注明日期
  3. NIST SP 800-145: The NIST Definition of Cloud ComputingPeter Mell、Tim Grance,美国国家标准与技术研究院(NIST),2011-09
  4. Twenty years of Amazon S3 and building what's nextSébastien Stormacq,AWS News Blog,2026-03-13
  5. AWS Fault Isolation Boundaries: Availability ZonesAWS 白皮书,未注明日期
  6. What is a virtual machine (VM)?Red Hat,2025-07-25
  7. What is Linux?Red Hat,2026-02-05
  8. What is the Linux kernel?Red Hat,2019-02-27
  9. What is a container?Docker 文档,未注明日期
  10. Ubuntu 24.04 LTS (Noble Numbat) release [20261017]Canonical(服务器版镜像 621,284,352 字节,目录里写作 593M),2026-10-17
  11. About Alpine LinuxAlpine Linux 开发团队,未注明日期
  12. NodesKubernetes 文档,2026-05-17
  13. Our cloud-exit savings will now top ten million over five yearsDavid Heinemeier Hansson(37signals),2024-10-17
  14. It's five grand a day to miss our S3 exitDavid Heinemeier Hansson(37signals),2025-03-26
  15. Moving Mountains of Data off S337signals Dev(RECORDABLES,嘉宾 Jeremy Daer),2026-01-08
  16. REL10-BP01 Deploy the workload to multiple locationsAWS Well-Architected Framework,未注明日期
  17. Firecracker: Lightweight Virtualization for Serverless ApplicationsAlexandru Agache、Marc Brooker 等(AWS),NSDI '20,2020-02
  18. FirecrackerFirecracker 项目(AWS 开源),未注明日期