跳到主要内容
约 4 分钟2 张卡

成本归因

成本归因把资源费用分配到业务和责任方。本文讲解单位成本、共享分摊和优化评估。

1. 面试核心​

先记住这几条,再读正文
  • 单位成本。 单位成本以明确业务量为分母,例如每笔成功订单的费用。
  • 资源分摊。 专用资源直接归属,共享资源按可解释的用量分摊。
  • 效果评估。 优化评估同时比较单位成本、吞吐、错误率和尾延迟。卡 · 综合题
  • 固定成本摊薄。 固定成本被更多业务量分摊后,单位成本也会下降。卡 · 固定成本与边际成本
  • 投入回收期。 研发、迁移和长期维护费用共同决定优化回收期。

2. 业务单位​

单位成本需要稳定口径。在线 API 可计算每千次请求费用。交易链路可计算每笔成功订单费用。存储则可计算每 GB 月费用。

成功订单数同时反映业务量和交付结果。失败请求也消耗资源,因此仍计入成本分子。若业务类型不同,应分别统计,避免低成本流量掩盖高成本交易。

3. 资源所有权​

专用数据库可直接归属服务或团队。共享网关、集群和消息平台需要分摊。

资源元数据记录产品、服务、环境和地域。租户层级与采购方式也影响费用。应用侧的请求数、CPU 时间和存储量补充归因。

标签与账单的生效规则取决于平台。历史费用应按原始账单与当时口径核算。

4. 共享成本分摊​

分摊可按固定比例或实际资源消耗计算。代理指标应接近真实成本驱动因素。

消息平台可结合写入字节、保留量和读取量分摊。认证平台可按认证次数分摊。无法准确归属的部分应单列公共预算。

分摊规则需要公开并保持稳定。规则改变时记录版本,以便解释账单变化。

5. 性能测量​

优化前固定负载、请求分布和数据规模。缓存状态、实例规格和运行时版本也需一致。记录吞吐、错误率、P95/P99 和资源用量。

安全吞吐是在满足 SLO 时的吞吐。容量规划还应保留故障接管余量。单次极限基准只反映该测试条件。

6. 可靠性投入​

副本、跨地域复制和容量余量会增加运行成本。目标更高时,还需评估发布控制与值班能力。

比较方案要明确它减少哪类故障。投入包括建设、持续运行和维护复杂度。业务损失与用户影响决定目标是否值得提高。可用性增加一个 9,没有固定的成本倍数。

7. 优化顺序​

闲置资源、重复工作和无界重试是直接候选项。查询、缓存和批处理优化需要验证正确性。实例规格、自动扩容和采购折扣则影响不同费用项。

重写服务或迁移数据库要计入研发与迁移成本。评估顺序由预计收益、风险和验证成本决定。

8. 优化护栏​

减少副本会降低费用,也会减少接管余量。增加缓存 TTL 会减轻数据库负载,同时增加陈旧窗口。

实验应写明单位成本目标和 SLO 下限。灰度范围、观察期与回滚条件同样需要固定。节省金额扣除新增维护费用后,再计算回收期。

9. 成本差异分析​

总成本变化来自业务量、用量效率、价格和分摊口径。各项影响应转换成金额后比较。业务量增加与单价下降可以同时发生。

9.1 固定成本与边际成本​

设固定月成本为 F,单笔变动成本为 v,业务量为 Q。简化模型如下:

总成本 C = F + v × Q
单位成本 C / Q = F / Q + v

假设 F 为 1000 元,v 为 0.01 元。1 万单的总成本为 1100 元,单位成本为 0.11 元。2 万单的总成本为 1200 元,单位成本为 0.06 元。

此时单位成本下降来自固定费用摊薄。判断代码优化效果,还需在相近负载下比较资源用量。容量跨过扩容阈值后,固定成本也会阶梯上升。

同一模型可分解成本差额:

C1 - C0 = (F1 - F0) + v0 × (Q1 - Q0) + Q1 × (v1 - v0)

三项分别表示固定费用、业务量与单位变动费用的影响。v 仍可进一步拆成资源用量与采购单价。

10 · 面试题卡片​

10.1 怎样判断一次性能优化是否值得投入​

出现公司:阿里巴巴

题型:综合题

考察重点

  • 业务单位、基线和资源成本归因。
  • 尾延迟、安全吞吐与 SLO 护栏。
  • 实现成本、持续成本和业务收益比较。

相关内容:业务单位至成本差异分析。

参考回答

值得投入的优化应改善用户结果或长期单位成本。

评估要使用一致的工作负载和成本口径。吞吐提高时,还需确认错误率与尾延迟符合目标。

预计节省需扣除研发、迁移和持续维护成本。灰度期间用 SLO、业务正确性和接管容量约束风险。优化后的账单还需区分业务量、效率和价格变化。

10.2 业务量翻倍、单位成本下降,能否证明性能优化有效?​

出现公司:暂无已核验的公开来源(本站自测)

考察重点:固定成本摊薄、变动成本与可比基线。

相关内容:固定成本与边际成本。

参考回答

单位成本下降也可来自固定费用摊薄。

固定成本 1000 元、单笔变动成本 0.01 元时,1 万单约为 0.11 元每单。2 万单约为 0.06 元每单。代码即使未变,也会出现下降。需用相近负载比较资源消耗和 SLO。

11. 参考资料​