CDN 是怎么收费的:从流量、95 峰值到日峰月均,厂商和客户两边看计费

2845 字
14 分钟
CDN 是怎么收费的:从流量、95 峰值到日峰月均,厂商和客户两边看计费

在 CDN 行业做了几年,计费几乎贯穿了我所有的工作:

  • 在百度云 CDN,给头部客户出定制化账单,实现过 95 峰值、日峰月均、流量、夜间带宽减半、闲忙时等多种计费方式;
  • 在字节火山 CDN,做过把客户用量推给计费中心的计量系统;
  • 在字节融合 CDN,站在采购方一侧,和多家 CDN 厂商对账,再把采购成本分摊给内部业务。

同一套计费规则,厂商关心的是「怎么收」,客户关心的是「怎么付得最少」。这篇把常见的计费方式整理一遍,并用一个月的模拟数据算一算,不同方式到底差多少。

说明:各家厂商的具体规则(采样粒度、时段划分、取整方式等)以合同和官网为准,本文讲的是通用的思路。文中的数据都是模拟的。

一、两大类:按流量,还是按带宽#

CDN 的计费方式,归根结底分两类:

  • 按流量:这个月一共传了多少数据(GB、TB),用多少付多少;
  • 按带宽:这个月「最高」用到了多大的带宽(Mbps、Gbps),按这个高度付费。至于「最高」怎么定义,就衍生出了下面的各种方式。

为什么会有按带宽计费?因为 CDN 厂商自己的成本,很大一部分就是按带宽算的:机房、运营商出口都要按峰值准备容量,峰值再短,资源也得提前备好。按带宽向客户收费,是把这个成本结构传导下去。

二、计费的基础:5 分钟一个点#

除了纯流量计费,几乎所有带宽类的计费都基于同一份数据:每 5 分钟一个带宽点。

做法是统计这 5 分钟内的总流量,除以 300 秒,得到这 5 分钟的平均带宽:

带宽5min⁡=5 分钟内的流量(bit)300 s\text{带宽}_{5\min} = \frac{\text{5 分钟内的流量(bit)}}{300\ \text{s}}

一天 288 个点,30 天的月份 8640 个点,所有带宽类计费都是在这 8640 个点上做文章。我在火山 CDN 做计费推量时,带宽计费的客户就是每 5 分钟推一个点给计费中心。

为了让后面的对比有个参照,我模拟了一个客户一个月的带宽:白天有个小高峰,晚上 21 点左右是大高峰,每天的波动在 ±5% 以内;另外第 11 天晚上有一场直播活动,带宽在一个小时里冲到了平时的两倍多。

三、按流量计费#

最直观的方式:把一个月所有的流量加起来,乘以单价。单价通常是阶梯价,用量越大越便宜。

模拟客户一个月的平均带宽约 472 Mbps,对应的流量约 153 TB。

带宽和流量之间有一个很好记的换算:1 Mbps 的带宽跑满一个 30 天的月,大约是 324 GB 流量。

1 Mbps×30 天=106×2,592,0008 Byte≈324 GB1\ \text{Mbps} \times 30\ \text{天} = \frac{10^6 \times 2{,}592{,}000}{8}\ \text{Byte} \approx 324\ \text{GB}

这个数后面算「该选哪种计费方式」时会用到。

四、按带宽计费的几种方式#

用同一份模拟数据,各种带宽计费方式算出来的计费带宽如下:

计费方式怎么算计费带宽(Mbps)
月峰值8640 个点里的最大值1589
日峰值月平均每天取最大值,30 个值求平均756
月第四峰值每天取最大值,30 个值里排第四大的734
95 峰值8640 个点去掉最高的 5%,剩下的最大值678
(参考)月平均带宽8640 个点的平均值472

同一个客户、同一个月,不同算法的计费带宽能差一倍多。下面逐个说。

1. 月峰值:最简单,也最「贵」#

直接取整个月的最大值。问题很明显:第 11 天那一小时的直播,把计费带宽从六七百拉到了将近 1600,客户要为一个小时的尖峰付一整个月的钱。所以纯月峰值计费很少见。

2. 95 峰值:行业最主流#

把 8640 个点从大到小排序,去掉最高的 5%(432 个点),第 433 个点就是 95 峰值。

95 峰值=降序排列后的第 ⌊8640×5%⌋+1=433 个点\text{95 峰值} = \text{降序排列后的第}\ \lfloor 8640 \times 5\% \rfloor + 1 = 433\ \text{个点}

5% 的点相当于一个月里约 36 个小时可以「超标」不算钱。偶发的突发流量,比如一场活动、一次发版,基本都会落在这 5% 里被去掉。模拟数据里,那场直播完全没有影响 95 峰值。

95 峰值对客户和厂商都比较公平:客户的偶发尖峰被容忍了,厂商又能按接近真实容量需求的水平收费。这也是为什么运营商和 CDN 厂商之间、CDN 厂商和大客户之间,绝大多数都用 95 结算。

也正因为 95 这么普遍,才有了「按 95 结算的总成本,怎么分摊给共享带宽的多个客户」这个问题,这就是我那项专利要解决的,见《我的第一项专利:用「95 区间」把 CDN 带宽成本分得更准》。

3. 日峰值月平均:每天的高峰都要付钱#

每天取一个峰值,再对一个月的日峰值求平均:

日峰月均=1N∑d=1Nmax⁡(第 d 天的 288 个点)\text{日峰月均} = \frac{1}{N}\sum_{d=1}^{N} \max(\text{第 } d \text{ 天的 288 个点})

它对单日尖峰比月峰值宽容:那场直播只抬高了一天的峰值,被 30 天一平均就摊薄了。但它对「每天都有高峰」的业务不友好,每天晚高峰的那个最高点都被计入。模拟数据里,日峰月均(756)比 95 峰值(678)高出约 11%。

日峰月均更适合带宽曲线每天都很平稳的客户,比如下载、点播类业务;对于有明显晚高峰、偶尔还有活动的业务,95 通常更划算。

4. 月第四峰值#

每天取峰值,然后取一个月里第四大的那个。意思是一个月里可以有 3 天「超标」不算。它介于月峰值和日峰月均之间,一些云厂商把它作为可选的计费方式。

5. 夜间带宽减半#

在合同约定的夜间时段(比如凌晨),带宽按一半计入,再参与 95 或其他方式的计算。这是一种鼓励客户把预热、批量下发这类可以错峰的流量挪到夜间的手段,对厂商来说,夜间本来就是带宽的低谷,闲着也是闲着。

要注意的是,它只对高峰落在夜间的客户有意义。模拟客户的高峰在晚上 21 点,夜间本来就不在前 5% 里,所以开不开夜间减半,95 峰值都是 678,没有变化。

6. 闲忙时计费#

把一天分成忙时和闲时两段,分别计算计费带宽,或者用不同的单价。思路和夜间减半一样:用价格引导客户错峰,让厂商的带宽资源在一天里用得更均匀。

五、其他计费方式#

  • 请求数计费:按请求次数收费,常见于 HTTPS 请求、动态加速、边缘计算等场景,因为这些场景的成本更多花在 CPU(TLS 握手、回源、计算)上,而不是带宽上。在火山 CDN 计费推量里,QPS 计费的客户就是按小时推送请求数据。
  • 增值服务单独计费:比如 HTTPS、WAF、实时日志、图片处理等,一般单独计价,不并入带宽或流量。

六、容易忽略的细节#

账单对不上,很多时候不是计费方式本身,而是这些细节:

1. 计费区域。 不同区域的带宽成本差别很大,海外普遍比国内贵,各区域通常分别计费:国内的 95 和海外的 95 各算各的,单价也不同。一个客户的流量往海外迁移,即使总量不变,账单也会上涨。

2. 包头系数。 CDN 计费的流量来自节点日志,记录的是应用层(HTTP)的数据量;而实际在网络上传输时,还有 TCP/IP 包头、重传、TLS 握手等开销。所以很多厂商会在日志流量上乘一个大于 1 的包头系数,来近似网络层的真实流量。我在字节做火山 CDN 的计费核对时,包头系数就是独立核算计费值时必须考虑的因素之一。

3. 统计口径和时间。 5 分钟的点是按什么时区切分的?月份按自然月还是账期?有的厂商对 95 的取点规则有细微差别(比如 8640 个点还是按实际天数)。这些在厂商和客户之间对账时,都要事先对齐,否则差几个点就会对不上。

4. 多个域名、多个项目合并计算。 一个客户有多个域名,是先把所有域名的带宽在每个 5 分钟点上加起来,再算 95;还是每个域名各算 95 再相加?两者结果不同:前者因为各域名的高峰可能错开,通常更低。合同里一般约定按客户(或按项目)合并计算。

七、站在两边看:该选哪种计费方式#

站在客户这边,选择的关键是带宽利用率,也就是平均带宽和计费带宽的比值:

利用率=月平均带宽计费带宽\text{利用率} = \frac{\text{月平均带宽}}{\text{计费带宽}}

利用率高,说明带宽曲线平,按带宽买更划算;利用率低,说明大部分时间带宽是闲着的,按流量买更划算。具体的平衡点,可以用前面那个换算来算:

按带宽计费折合的每 GB 单价=带宽单价(元/Mbps/月)324 GB×利用率\text{按带宽计费折合的每 GB 单价} = \frac{\text{带宽单价(元/Mbps/月)}}{324\ \text{GB} \times \text{利用率}}

把它和流量单价比一比,就知道哪种更便宜。模拟客户按 95 算的利用率约为 472 ÷ 678 ≈ 70%,曲线很平,按带宽计费大概率更划算。

站在厂商这边,我做账单时最深的体会是:计费方式本质上是把自己的成本结构翻译给客户。厂商向运营商按 95 付费,就倾向于向客户按 95 收费;夜间带宽闲置,就推出夜间减半;HTTPS 消耗 CPU,就按请求数收费。理解了厂商的成本在哪里,就能理解每一种计费方式为什么存在,作为客户也就知道该怎么谈价格了。

95 计费还带来了一个有意思的现象:高峰和大盘错开的客户,接入后几乎不增加厂商的成本,厂商因此可以把同一份带宽卖给多个客户。这就是错峰和超卖,详见《CDN 的错峰与超卖》;接入新客户前怎么据此测算最低价,见《CDN 新客户接入前的价格测算》。

站在采购方内部,比如字节融合 CDN 这样同时向多家厂商采购、再分给内部业务的平台,还要多解决一个问题:厂商按整体 95 收的钱,怎么公平地分给每个业务、每个域名。单纯取 95 时间点那一刻的占比会失真,这也是我后来设计「95 区间」分摊算法的起点。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

CDN 是怎么收费的:从流量、95 峰值到日峰月均,厂商和客户两边看计费
https://tracerzzz.cn/posts/cdn-billing-methods/
作者
tracerZzz
发布于
2026-10-25
许可协议
CC BY-NC-SA 4.0
相关文章智能推荐
1
CDN 的错峰与超卖:为什么厂商能把同一份带宽卖好几次
工作在 95 计费下,一个新客户接入后,大盘的 95 可能几乎不涨,这就是错峰客户。它让 CDN 厂商可以把同一份带宽卖给多个客户,也就是超卖。这篇用模拟数据讲清楚错峰和超卖,以及衡量它们的两个指标:单个客户的边际超卖倍数,和整个平台的超售比。
2
CDN 新客户接入前的价格测算:用波形拟合算出最低成本价
工作火山 CDN 经营分析平台上的价格测算功能:销售拿到一个新客户的带宽打点,平台把它和大盘拟合,判断客户是否错峰、算出边际超卖倍数,再结合资源诉求的加权成本和包头系数,给出不同计费方式下的最低成本价。这篇讲它的输入、计算过程、示例和后续的优化方向。
3
指标异动归因:从贡献度公式到 CDN 毛利率的层层下钻
工作整理我学习指标异动归因的过程:加法、乘法、比率三类指标分别怎么算贡献度,为什么比率指标要拆出「结构变化」,以及我在字节火山 CDN 经营分析中,如何用这套方法对毛利率、收入、成本做逐层递归归因,把收入变化拆到客户增减、用量变化和价格变化。
4
我的第一项专利:用「95 区间」把 CDN 带宽成本分得更准
工作白话解读我作为第一发明人的发明专利(中国 CN117061354B、美国 US12375742B2):为什么按 95 峰值时间点分摊 CDN 带宽成本会算不准,以及「95 区间」分摊法是怎么解决的。附专利原文 PDF。
5
一个接口管多家 CDN:多厂商刷新预热的适配层设计
工作我在字节负责火山多云 CDN 和融合 CDN 的多厂商内容管理(刷新、预热)。这篇讲怎么用适配器模式屏蔽厂商差异,怎么在多云层做配额和限频,怎么按每家厂商的限制拆分任务,怎么用 RocketMQ、Redis、MongoDB 实现分布式下发、共享配额、重试和进度汇总,以及后来如何借助 AI 把新厂商接入时间缩短到一两天。
随机文章随机推荐

评论区

Profile Image of the Author
tracerZzz
想当木匠的程序员!
分类
标签
站点统计
文章
19
分类
9
标签
48
总字数
79,096
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
ESA Pages
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录