DigitalOcean 替代方案:价格、流量与 NVMe 对比
比较 DigitalOcean、Akamai 和 Hetzner 的每 GB 内存价格、包含流量、NVMe 存储及备份费用,并提供避免停机的迁移切换计划。
DigitalOcean 替代方案真正改变的是什么
大多数 DigitalOcean 替代方案改变的是账单,而不是机器。无论选择哪家,您获得的通常都是一台带公网 IP、virtio 磁盘和 root 访问权限的 Linux 虚拟机;内核不会关心控制面板上显示的是哪家公司的 logo。真正影响选择的因素包括每 GB RAM 的价格、包含的传输额度及超出额度后的每字节费用、磁盘的实际存储介质,以及操作系统之上的技术栈有多少由供应商代为运行。
本指南按这些维度进行比较,因为开发者可以通过终端或供应商公布的价格表逐项核查。本文也会说明 DigitalOcean 适用的场景,因为一份完全不承认其优势的比较更像广告。
以下每个价格都是公布的目录价,核查日期为 5 August 2026。价格会变化,而且本文涉及的多家供应商在 2026 年内都调整过价格。定价的结构变化慢得多,因此请先了解各项比例和计费模式,再在作出决定前到供应商官网确认当天的价格。
每 GB RAM 的价格才是应该比较的数字
The data behind this chart
[
{
"provider": "DigitalOcean 1 GB",
"ram_gb": 1,
"monthly_usd": "6.00",
"usd_per_gb_ram": "6.00"
},
{
"provider": "DigitalOcean 4 GB",
"ram_gb": 4,
"monthly_usd": "24.00",
"usd_per_gb_ram": "6.00"
},
{
"provider": "Akamai Nanode 1 GB",
"ram_gb": 1,
"monthly_usd": "5.00",
"usd_per_gb_ram": "5.00"
},
{
"provider": "Vultr NVMe 1 GB",
"ram_gb": 1,
"monthly_usd": "6.00",
"usd_per_gb_ram": "6.00"
},
{
"provider": "Hetzner CX23 4 GB",
"ram_gb": 4,
"monthly_usd": "6.49",
"usd_per_gb_ram": "1.62"
}
]在同一家服务商内部,每 GB RAM 的价格几乎不会变化。DigitalOcean 的 1 GB 方案按每 GB $6.00 收费,4 GB 方案的单价同样是每 GB $6.00,月费为 $24.00。在同一家服务商处选择更大的方案并不会获得折扣,因此方案大小不是决定因素,服务商才是。
Akamai 目前销售原 Linode 的产品,其 2 GB 和 4 GB 共享方案的价格分别为 $12 和 $24,与 DigitalOcean 精确到美元。其入门方案价格低于这两家,为 $5.00。两家公司完全一致的定价值得注意:这说明该档位的价格是根据竞争对手制定的,而不是根据硬件成本制定的,并且会继续跟随竞争对手调整。
采用自建数据中心并以欧元定价的服务商,差距就会显现出来。Hetzner CX23 提供 4 GB RAM,月费约为 $6.49,即每 GB $1.62,接近 DigitalOcean 价格的四分之一。这个美元金额由欧元标价换算而来,因此会随汇率变化。Hetzner 还在 2026 年提高了云服务价格,因此较早的对比文章中可能会出现已经不存在的价格。
每 GB RAM 的价格无法说明你获得的 CPU 性能。共享 vCPU 表示 hypervisor 会将你的核心调度与其他租户一起运行,可靠的检查方式是在你实际租用的服务器上执行:
vmstat 1 10查看 st 列。该列统计你的 vCPU 处于可运行状态、但 hypervisor 将物理核心交给其他租户的时间比例。在负载较高时,几个百分点属于正常范围。持续达到两位数,说明宿主机超额分配资源;无法使用的核心不是更低的每 GB 价格可以弥补的。应在业务繁忙时段运行该检查,因为 steal time 取决于邻近租户,而邻近租户也有自己的使用时段。若要了解加上存储和流量后,托管服务每月的实际成本,请阅读 VPS 每月的实际成本。
包含流量的实际成本
The data behind this chart
[
{
"provider": "DigitalOcean 1 GB",
"included_tb": 1,
"overage_usd_per_tb": "10.00"
},
{
"provider": "Akamai Nanode 1 GB",
"included_tb": 1,
"overage_usd_per_tb": "5.00"
},
{
"provider": "Vultr NVMe 1 GB",
"included_tb": 2,
"overage_usd_per_tb": "10.00"
},
{
"provider": "Hetzner CX23 4 GB",
"included_tb": 20,
"overage_usd_per_tb": "1.20"
}
]DigitalOcean 的入门套餐包含 1 TB 出站流量,超出部分按 GiB 计费,折算下来每增加 1 TB 约为 $10.00。Akamai 同样包含这些 TB,超出部分的费用约为其一半,即每 TB 约 $5.00。Vultr 包含 2 TB,超出部分的费率相近。Hetzner 包含 20 TB,超出后每 TB 约收取 $1.20,与其他服务商相差一个数量级。
有 3 个结构性细节比表面数字更重要。4 家服务商的入站流量都免费,因此只有出站流量会计入用量。DigitalOcean 和 Vultr 会在账户中的所有服务器之间共享流量额度,因此一台繁忙服务器会消耗其他服务器的额度;一组小型服务器也会共享同一个大额度。服务器之间通过私有网络或 VPC 传输的流量通常完全不计费。因此,将数据库放在私有接口上不仅是安全决策,也是计费决策。
如果您的用量远未达到上限,这些差异并不重要。博客、返回 JSON 的 API 或小型 SaaS 通常一个月不会达到 1 TB。视频、图片库、游戏服务器、软件包镜像和异地备份目标则可能达到。请先测量,再做判断:
sudo apt update && sudo apt install -y vnstat
sudo systemctl enable --now vnstat
vnstat -mvnstat -m 按月输出流量,并区分接收和发送。只有发送列会计费。数据库初始为空,因此安装后 1 天才能得到第一条有用读数,完整的第 1 个月数据则要再等 1 个月。在此之前,服务商自己的带宽图表是您唯一可用的记录。
还要问一个价格表无法回答的问题:超过流量额度后,服务商是向您收费,还是限制端口速率。收费会增加成本。限速会影响用户,而且恰好发生在用户数量最多的时候。您需要确认,流量峰值到来时,超额流量会带来哪一种结果。
NVMe 还是 SATA,以及如何确认实际使用的存储
面板显示为 NVMe。这只是对宿主机磁盘的说明,不能证明您的虚拟机实际运行在这些磁盘上。本地存储会将虚拟磁盘放在同一台物理机内部的磁盘上。网络存储则将虚拟磁盘放在独立的存储集群中,并通过数据中心网络访问。即时扩容、在线迁移和原地创建快照正是因此成为可能。
在客户机内部,两者看起来完全相同:
lsblk -d -o NAME,ROTA,MODEL,SIZE
cat /sys/block/vda/queue/rotational对于宿主机声明为非旋转介质的设备,ROTA 和 rotational 都会报告 0。因此,基于 NVMe 的网络卷与本地 NVMe 报告的结果完全相同。该值只能说明磁盘不是旋转盘片,无法说明磁盘位于何处。确认 Linux 上的 NVMe 磁盘介绍设备名称及其含义。
区分两者的方法是测量队列深度为 1 时的延迟,因为单次小型读取没有其他请求可以掩盖延迟。本地 NVMe 从同一机箱内返回结果。网络卷的每次读取都要经过数据中心网络完成一次往返,因此其延迟下限更高,即使在较深队列深度下的吞吐量看起来相近。
sudo apt update && sudo apt install -y fio
fio --name=lat --filename=/var/tmp/fiotest --size=1G --rw=randread --bs=4k \
--ioengine=libaio --direct=1 --iodepth=1 --runtime=30 --time_based --group_reporting
fio --name=iops --filename=/var/tmp/fiotest --size=1G --rw=randread --bs=4k \
--ioengine=libaio --direct=1 --iodepth=32 --runtime=30 --time_based --group_reporting
rm -f /var/tmp/fiotest第一次运行会输出一个 clat 块,其中包含完成延迟。请查看第 99 百分位,而不是平均值,因为平均值会掩盖用户实际感受到的停顿。第二次运行会在摘要行中输出 IOPS=。请在您当前使用的服务商上运行这两项测试,也在您考虑使用的服务商的试用实例上运行,并在同一天比较这两个结果。任一服务商发布的数据都是在您无法查看的机器上测得的。还应在不同时间段运行 3 次,因为同一套餐在空闲宿主机和繁忙宿主机上的结果可能不同。正确测试 VPS 性能介绍测试方法,SSD VPS 实际意味着什么解释这些营销术语背后的含义。
区域:测量延迟,不要看地图
区域列表在实际测量前都只是营销内容。用户感受到的是其网络到服务器之间的往返延迟,这取决于数据包经过的路由,而不是地图上的距离。位于拥塞中转链路后方、距离 300 km 的服务器,可能不如位于通畅路径上、距离 1,500 km 的服务器。
ping -c 20 203.0.113.10
mtr -rwc 50 203.0.113.10
curl -o /dev/null -s -w 'dns %{time_namelookup} connect %{time_connect} tls %{time_appconnect} total %{time_total}\n' https://example.commtr会显示每一跳及其丢包率和延迟。因此,两跳之间突然增加 60 ms,可以定位造成问题的链路,而不是简单归咎于目标服务器。应从用户所在网络中的一台机器运行该命令。数据中心之间的路由通常是互联网中质量最好的路由,会让所有提供商的表现看起来更好。
无论价格如何变化,有一个结构性问题始终存在。如果提供商在您的大洲只有一个区域,那么灾难恢复计划实际上就是跨大洲迁移计划,并且必须承受相应的延迟。应统计实际可以故障转移到的区域,而不是页面上列出的区域。
快照和备份需要单独付费
存储附加服务是低价套餐变贵的主要原因。DigitalOcean 的快照价格为每月每 GiB $0.06;自动备份则按服务器套餐价格的一定比例收费:每周备份为套餐价格的 20%,每日备份为 30%,也提供按 GiB 计费的用量模式。这两种模式都有合理之处,但缺点相反。按比例计费会随服务器规格增长,因此存储少量数据的大型服务器会支付过高费用。按 GiB 计费会随数据量增长,因此连接大型卷的小型服务器会支付过高费用。
请确认恢复操作的费用和所需时间,因为备份存储费用只是问题中相对简单的一半。还要确认销毁服务器是否也会删除其快照。
此外,应保留一份不受服务商控制的副本。服务商快照存储在服务商账户内,因此登录凭据丢失、付款失败或账户被暂停时,服务器及其备份可能同时无法访问。将备份保存到您控制的存储中的 restic只需支付几美元的对象存储费用,还可恢复到任意服务商,从而使迁移可以撤销,而不是变成不可逆的最终操作。
您希望自行管理多少层基础设施
云服务商处于一条连续的光谱上。一端是租用一台机器,所有组件都由您自行运行。另一端是推送一个 git 分支,完全不接触服务器。只有在前一端,按 GB 内存比较价格才有意义。因为在后一端,您购买的是运维工作,而不是内存;运维工作没有按 GB 计价的价格。
在比较任何方案之前,先如实判断自己处于哪一端。每月 $15.15 的托管数据库,与 $6 的服务器相比似乎很贵。但将背后的工作计入成本后,结论就不同了:复制、故障转移、按时间点恢复、小版本升级,以及在 03:00 唤醒某人处理告警。如果这些工作由您负责,可以自行运行并保留差价。如果您的工作重点是应用开发,那么购买这些运维能力的成本并不高。托管与非托管的区别决定了您应该查看价格表中的哪一列。如果您的真实需求是独占整台机器及其磁盘,那么这属于VPS 与专用服务器的选择,而不是云服务商的选择。
DigitalOcean 适用的场景
当您购买的是平台能力,而不是虚拟机本身时,DigitalOcean 更具优势。
- 托管数据库。 托管 PostgreSQL 和 MySQL 的起价为每月 $15.15,包含 1 GiB RAM 和 10 GiB 存储空间;额外存储按 GiB 计费,备用节点按节点计费。自行实现同等可靠性,需要配置 Patroni 或 repmgr、共识存储、连接代理,并实际演练故障转移。两人团队无法在维护这套系统的同时持续交付功能。
- App Platform。 推送一个分支后,即可获得构建结果、证书和运行中的服务,无需修补操作系统。这个产品的廉价 VPS 版本就是由您在周六完成这些工作。
- 由成熟 Terraform provider 支持的对象存储和负载均衡器。 能够通过代码销毁并重建的基础设施,其价值高于更低的单位价格。
- 围绕产品的公司服务。 包括公开的支持级别、带历史记录的状态页,以及能够回复客户安全问卷的组织。如果您转售托管服务,这些价值高于每 GB 少花的几美元。
DigitalOcean 变贵的场景,是批量使用普通虚拟机,并产生实际的出站流量。这正是替代方案能够解决的问题,也是自行托管的开发者购买最多的部分。
迁移到新服务提供商且不中断服务
迁移期间的中断只由一个原因造成:数据已迁移到新 IP,但流量仍到达旧 IP。下面的每一步都是为了缩短并准确控制这个时间窗口。
至少提前 48 小时处理 DNS。解析器会按照 A 记录的 TTL(生存时间)缓存记录。因此,TTL 为 24 小时的记录在您修改后,最多还会将用户发送到旧服务器 1 天。在切换时再降低 TTL 没有帮助,因为解析器已经缓存了旧值,并保留了旧的过期时间。应先降低 TTL,等待旧值过期,再执行迁移。
dig +noall +answer example.com A
dig +noall +authority example.com SOA第一个命令会在输出的第二列显示当前 TTL。在 DNS 提供商处将其设置为 300,然后等待超过刚才替换的数值。
然后按以下顺序操作。
- 先配置新服务器并完成加固,再让任何内容进入该服务器。新 VPS 上的前 10 分钟介绍了人们赶时间时经常跳过的部分。
- 安装应用程序栈。在旧服务器继续正常提供服务的同时,使用 rsync 首次复制数据。
- 现在使用 DNS-01 challenge 为新主机签发 TLS 证书。HTTP-01 challenge 会根据 DNS 当前指向的 IP 进行验证,而该 IP 仍是旧服务器。DNS-01 challenge可以完全解决这个顺序问题。
- 在修改公网配置前,通过覆盖自己笔记本电脑上的 DNS 来测试新主机。将
203.0.113.20 example.com添加到/etc/hosts,访问真实站点,然后删除该行。此测试不会影响任何用户。 - 处理数据库大小问题。若数据库小于几 GB,导出和恢复可以在写入冻结期间完成。若超过该大小,应提前几天设置从旧数据库到新数据库的复制并等待其追平,使冻结时间只覆盖提升操作。
- 冻结写入。将应用置于维护模式或只读模式。这是用户唯一能看到的部分,持续时间应为几分钟。
- 执行最终增量同步:再次运行相同的 rsync,然后执行最终数据库同步。
- 将 A 和 AAAA 记录修改为新 IP。TTL 为 300 秒时,大多数解析器会在约 5 分钟内完成跟随更新。
- 让旧服务器继续运行并保持可访问至少 1 天,因为部分解析器会忽略较短的 TTL。如果旧应用仍可写入,延迟到达的请求会写入错误的数据库。因此,应让旧主机连接新数据库,或从旧主机返回维护页面。
- 监控新服务器的错误率 1 天,将 TTL 恢复为正常值,并在 1 周后销毁旧服务器,而不是当天晚上销毁。
复制操作本身包含两个命令,每个命令都要运行 2 次。文件同步命令如下:
rsync -aHAX --numeric-ids --delete -e ssh /srv/ deploy@203.0.113.20:/srv/-a保留所有者、权限和时间戳,-H保留硬链接,-AX保留 ACL 和扩展属性,--numeric-ids阻止 rsync 将用户 ID 映射为名称,从而避免两台机器上的名称不一致。提前几天运行一次,然后在冻结期间再次运行;第二次只会传输发生变化的内容。
对于大小适合导出的 PostgreSQL:
pg_dump --format=custom --no-owner --dbname=appdb --file=appdb.dump
scp appdb.dump deploy@203.0.113.20:/var/tmp/
pg_restore --clean --if-exists --no-owner --dbname=appdb /var/tmp/appdb.dump对于 MySQL 或 MariaDB:
mysqldump --single-transaction --routines --triggers --databases appdb > appdb.sql--single-transaction会在一个事务中对 InnoDB 表执行导出,因此结果保持一致,应用在导出期间也可以继续写入。没有该标志时,mysqldump 会锁定表。这会使写入冻结比计划提前开始,并且冻结时间将无法由您控制。
有两个问题发生在服务器之外。新 IP 没有电子邮件信誉,因此直接从新服务器发送的邮件会被过滤为垃圾邮件。应通过已有信誉的中继发送邮件。任何将您的出站 IP 列入允许列表的合作方,例如支付网关或客户端防火墙,也必须在切换前更新;否则流量迁移后,这些调用会立即失败。
提交前的检查事项
- 价格是否为促销价,以及续费时的价格是多少。首期折扣在续费时翻倍,仍然是真实成本,只是延后收取。
- 购买周期是否需要预付。SSD Nodes 采用多年预付方案,以预付资金换取更低的每 GB RAM 价格。代价是下个月无法随时退出,因此应根据自己的确定程度选择购买周期。
- 每月快照费用是多少,以及恢复需要多少费用和时间。
- 超出额度后是按量计费,还是进行限速。
- IPv6 是否正确路由,还是只附加了一个 IPv6 地址。
- 是否提供 API,以及是否有持续维护的 Terraform provider;如果您计划通过代码而不是手动操作重建环境,这一点很重要。
- 如何联系支持团队,以及对于服务器宕机问题公布的响应目标是什么,而不是销售咨询的响应目标。
应根据对您账单影响最大的因素进行选择。如果主要成本是内存,则每 GB RAM 的价格可以决定选择。如果主要成本是出站流量,则包含的流量额度可以决定选择。如果主要成本是您自己的时间,则托管平台可以决定选择;在这里比较的四个平台中,DigitalOcean 的表现最强。
FAQ
如果只看价格,Hetzner 是否总是比 DigitalOcean 便宜?
对于普通虚拟机,按每 GB RAM 计算,Hetzner 便宜得多:截至 5 August 2026,入门级共享方案的价格约为 $1.62,而 DigitalOcean 为 $6.00。但将托管服务纳入比较后,结论会改变。Hetzner 销售服务器和网络服务,因此托管数据库或推送部署平台需要由您自行提供,或交给第三方提供,而这些工时都需要付费。Hetzner 还在 2026 年上调过云服务价格,因此请查看当前的欧元价格,不要直接相信旧文章。
如果需要托管数据库,我应该选择哪个 DigitalOcean 替代方案?
Vultr 和 Akamai 都提供托管数据库。如果您使用 DigitalOcean 的主要原因是托管数据库,它们是最接近的替代方案。低价欧洲主机通常不提供这类服务,因此您需要自行运行 PostgreSQL 或 MySQL,包括配置复制和经过测试的故障转移。这是一项实际的运维工作。在决定便宜的服务器是否真的节省成本前,请将这些工作与托管 1 GiB 实例每月 $15.15 的费用进行比较。
如何在不中断服务的情况下将运行中的网站迁移到新服务商?
至少在迁移前 48 小时将 DNS TTL 降低到 300 秒,因为解析器会按照之前的 TTL,在相应时间内继续返回旧 IP。旧主机仍在提供流量时,先构建并测试新主机。您可以在自己的机器上使用 /etc/hosts 覆盖,这样其他用户不会看到新主机。然后暂停写入几分钟,执行最后一次 rsync 增量同步和数据库同步,切换 A 和 AAAA 记录,并让旧服务器继续运行一周,以防某些解析器忽略了较短的 TTL。
更便宜的 VPS 是否意味着磁盘速度更慢?
不一定。关键在于虚拟磁盘位于主机本地,还是位于网络存储集群中,而控制面板通常不会说明这一点。lsblk -o NAME,ROTA 对两者都报告为 0,因为两者都不是机械硬盘。请改为实际测量:使用 --iodepth=1 --bs=4k --direct=1 运行 fio,并读取第 99 百分位完成延迟。网络卷的每次读取都需要经过数据中心网络往返,因此即使深队列吞吐量相近,其延迟下限也高于本地 NVMe。
从新服务器发送的邮件还能正常送达吗?
通常一开始不能。新 IP 地址没有发送历史,因此收件方会将来自该地址的邮件视为可疑邮件,邮件可能进入垃圾邮件文件夹,甚至直接被拒收。SPF 和 DKIM 记录在更新前也仍然指向旧主机。请通过已有良好信誉的中继或邮件服务发送应用邮件,并在切换前更新邮件相关的 DNS 记录,不要等到切换后再更新。