CDN Bill(CDN 扣费记录)
Name | Type | Relation With | Description |
---|---|---|---|
usageAmount | Number | 使用量(单位 byte) | |
billTime | DateTime | 计费时间 | |
billStatus | Enumeration | 结清状态,可取值为: hold(锁定) | paid(已支付) | |
user | Relation | User | |
domainName | Text(short text) | 计费的域名 |
统计使用量并从流量包中扣流量.
计费方案
以金山云为例.最小统计颗粒度为 5 分钟,延迟一到两个颗粒度(5 - 10分钟).我们采取以下计费策略:
- 假定有 a,b,c,d 共 4 个颗粒度的时间点
- 设定每次获取流量数据的时间窗口包含3个颗粒度,即3各时间点的数据
- 第一次获取流量数据时,获取的是 a,b,c 3个时间点的流量数据
- 鉴于统计延迟的问题,我们将 a 时间点认定为获取的是准确数据, b,c 时间点获取的为不准确数据
- 用 a 时间点的数据从用户的账户中实际扣费,并在 CDN Bill 表中插入一条扣费记录,并将 billStatus 设置为 paid 状态.
- 用 b,c 时间点的数据从用户的账户中锁定费用,并在 CDN Bill 表中各插入一条锁定消费金额,并将 billStatus 设置为 hold 状态.
- 第二次获取流量数据时,获取的是 b,c,d 3各时间点的流量数据
- 将第一次获取流量时,b 时间点锁定的消费金额退回到用户账户中,然后用最新的 b 时间点的数据从用户的账户中实际扣费,并在 CDN Bill 表中插入一条扣费记录,并将 billStatus 设置为 paid 状态.
- 依次往复