增量计算不是“更快的离线”:四个头部案例告诉你,数据架构升级真正的胜负手

2 阅读16分钟

这两年,大家都在谈“湖仓一体”“批流统一”“实时化”。但技术决策者最关心的其实只有两件事:

  1. 能不能更快地拿到可信的数据?
  2. 成本和复杂度能不能更低?

我读完 4 篇一线案例(美团 / 小红书 / 快手 / 数美科技)后,最大的感受是:
增量计算的价值,并不在于把 T+1 变成分钟级这么简单,而在于它提供了一条“用同一套体系同时解决一致性、时效性、成本、可维护性”的升级路线。
这篇文章我会从以下几个方面讲清楚:

  • 为什么传统 Lambda/多引擎架构走到了天花板
  • 四个案例各自解决了什么问题
  • 作为技术决策者,你该如何判断:增量计算到底适不适合你
  • 我个人认为最容易踩坑的 5 个点(比技术细节更致命)

1. 你现在的痛点,本质上是“变化”

传统数据体系有个隐形前提:

  • 离线假设:数据“基本不变”,每天全量重算一次就行。
  • 流式假设:数据“持续变化”,但计算逻辑要提前固化(写死拓扑/作业)。

问题是:今天的业务两种假设都不成立。

  • 数据不仅持续变化(新增/更新/删除/晚到/回补),变化形态还越来越复杂CDCUpsert、维表频繁变更、回刷补数成为常态)。
  • 上层需求不再是“算出一个结果表就完事”,而是 指标平台驱动、即席分析、AI/实验反馈闭环——SQL 变成机器自动生成、Join 和窗口变得更重。

于是你会得到熟悉的“架构不可能三角”:

  • 要时效 → 上 Flink/流式 → 资源长驻、运维复杂、两套链路(Lambda)
  • 要成本 → 回到 Spark T+1 → 时效不够、补数回刷成本爆炸
  • 要一致 → 多引擎多链路下口径漂移(更糟的是:责任也漂移)

我的观点:
增量计算真正的革命,是把“变化”提升为一等公民:系统默认数据会变、会回补、会被改写,计算默认只为变化付费。

2 四个案例,一句话拆掉四种“必败矛盾”

案例一句话总结它解决的核心矛盾
美团 BI + 指标平台升级用“单引擎 + 双模执行 + 增量计算”收敛多引擎Serving 与 Ad-hoc 割裂、口径不一致、迁移成本极高
小红书实验数仓近实时用“分钟级增量 + 湖上建模”把实时/离线两套链路合并为一套近实时范式分钟级时效 vs Flink 长驻成本 vs 实时/离线一致性
快手离线改增量验证用“可复制的评测方法 + Cost-based 增量计划选择”证明增量不是玄学复杂算子可否增量化、成本是否可控、稳定性是否更好
数美科技“定义即可查”用“JSON 半结构化 + 自动索引/生成列”同时拿到灵活性与宽表级性能灵活字段(JSON) vs 高性能查询(宽表/CK)

2.1 横向对比:增量计算 vs 离线计算 vs 流计算

很多人把这三者当成“速度档位”的选择:离线慢、流快、增量介于两者之间。

但从工程落地看,它们更像三种完全不同的系统假设

  • 离线计算(Batch) :默认数据相对静态;靠“定时全量重算”获得确定性。
  • 流计算(Streaming) :默认数据持续到来;靠“持续计算 + 状态”获得低延迟。
  • 增量计算(Incremental / GIC) :默认数据会变(新增/更新/删除/晚到/回补);靠“只为变化付费 + 复用历史结果”获得低延迟与低成本的折中,并尽量保留离线的灵活性。

下面给一个面向技术决策者更实用的对比(不是教科书定义,而是你会为谁付出什么代价):

维度离线计算(Batch)流计算(Streaming)增量计算(Incremental / GIC)
典型目标吞吐与成本最优(T+1/T+n)延迟最小(秒级/毫秒级)在分钟级/小时级延迟下,把成本与复杂度打下来
数据变化假设主要 append;更新/回补通过补数/回刷处理持续 append 为主;更新/删除需要 CDC + 状态回撤把变更当常态:append / update / delete / late / backfill 都要体系化处理
计算方式每次全量重算或按分区重算持续运行作业,增量更新 state周期性 refresh 动态表/物化结果;复用历史结果,只处理变化部分
延迟与成本曲线低频时很省;一旦要提时效 → 成本陡增(频繁全量)低延迟但资源长驻,成本与峰值绑定可通过 refresh 周期调节:延迟越低通常越贵,但可控(快手案例给了曲线直觉)
开发形态SQL/批任务,易统一口径流式 SQL/作业拓扑,语义与批不同尽量沿用 SQL/离线语义,减少“双写双运维”
一致性与回补依赖补数/重跑;窗口大时成本高乱序/晚到/回撤复杂;需要状态管理通过动态表与增量补算,把“回补”体系化(小红书/快手强调的点)
运维复杂度以调度、资源排队、失败重跑为主长作业稳定性、状态膨胀、背压、Checkpoint 等介于两者之间:既要调度也要关注刷新策略,但通常比纯流更轻
适用场景(高 ROI)财务/报表、稳定口径的离线数仓风控、监控、撮合、在线特征等真实时链路指标平台、实验看数、近实时数仓、半结构化即席分析(四个案例的共集)

我的观点:
增量计算最容易打赢的仗,不是“抢秒级”,而是“消灭双体系”。
只要你的业务能接受分钟级/小时级延迟,增量往往能在一致性、成本、运维复杂度之间给出更好的综合解。

接下来分别把每个案例的“技术钩子”和“决策价值”详细讲解。

3 案例一:美团——从多引擎堆叠到“一体化统一引擎”

来源:美团基于云器增量计算最佳实践(知乎)

3.1 美团的真实困境:指标平台把“查询形态”逼成了极限

文章对传统 BI 平台现状描述非常典型:

  • 离线生产 Spark/Hive
  • Ad-hoc 联邦 Presto/Trino
  • Serving 看板 ClickHouse/MPP

当企业走向“指标平台驱动”后,痛点被放大:

  • 多引擎同步导致口径/版本难统一,回刷补数变成组织问题
  • Serving 追求亚秒、Ad-hoc 追求灵活规模,两类负载天然冲突
  • SQL 由语义服务生成,冗余嵌套多、Join 多,人工优化空间被压没
  • 存量 SQL 资产迁移成本变成升级最大的隐性门槛

3.2 他们怎么破局:单引擎里做“双模执行”,再叠增量

文中给出“理想型能力清单”里,我认为最关键的是这条:

一份存储、一套元数据、一个引擎、一套资源池、一套语法

落地效果用“三个三分之一”概括:

  • 同等资源关键场景性能提升至原来的 3 倍(文中示例:平均响应 344.3s → 122.8s;Serving 平均 650ms → 350ms)
  • 三套异构引擎收敛为一套(架构复杂度下降三分之二)
  • 不搬数据、不改 SQL、不迁任务的插拔式升级

我的观点:
美团这个案例最值得决策者学习的,不是某个引擎快,而是它把“升级不可推进”的核心原因——迁移成本——正面解决了。
很多公司升级失败,不是技术不行,而是 SQL/UDF/权限/调度等“业务资产”太重,一旦要大改就没人敢动。

4 案例二:小红书——近实时实验数仓:别再迷信“真·实时”

来源:小红书增量计算案例(微信公众号)

4.1 业务场景非常典型:实验指标要“分钟级”、还要“绝对可信”

小红书的诉求很硬:

  • 日志规模:数千亿/日(文中描述)
  • 实验调参频次:约 30 分钟一次 → 分钟级新鲜度
  • 查询要快:秒级返回
  • 精准度:实时 vs 离线最终差异 < 1%,且不采样

他们也踩过经典 Lambda 的坑:

  • 实时链路(Flink → ClickHouse)为了扛住压力,做过采样/裁剪维度
  • 离线链路 T+1 又不够新鲜
  • 两套语义、两套维护,最终形成“数据不置信”

4.2 关键思路:把“实时/离线”换成“可调度的近实时增量”

文中对比了开源组合(Paimon + Iceberg + StarRocks)与通用增量计算方案,最后选择后者,理由里我认为对决策者最重要的是三点:

  1. 技术栈简化:一套标准 SQL 覆盖实时写入、近实时刷新、在线查询
  2. 湖上建模的可复用性:ODS/DWD/DWS 仍然成立,只是调度粒度从天变成分钟
  3. 可灵活调节:1 分钟 / 5 分钟等周期按场景权衡成本与新鲜度

并且他们在模型层做了非常“工程化”的优化(这比“换引擎”更重要):

  • 用 <5分钟, user_id> 粒度聚合,规模从千亿级降到数亿级,查询 P90 < 10s(文中描述)
  • 用户实验维表用 array + 倒排索引,查询性能提升近 20 倍(文中描述)
  • 可变指标用 JSON 表达,避免上千列宽表带来的 schema 演进灾难

结果也很硬:

  • 新方案资源投入约为原实时方案的 36%
  • 数据差异 约 1%(对比历史 5%)

我的观点:
近实时是一种“产品形态”,不是技术妥协。
对 80% 的企业来说,分钟级比秒级更值钱:

  • 秒级要付长驻资源和运维体系的税
  • 分钟级可以用调度把成本打散,系统稳定性更强
  • 分钟级更容易做到与离线一致(尤其是回补/补算)

5 案例三:快手——离线改增量,“能做”到“做好”的验证方法

来源:快手增量计算案例(微信公众号)

快手这篇的价值在于:它不像一般营销稿,而是明确提出了一套验证框架:

  • 能不能做:语法语义是否完整支持增量化?数据一致性如何?改造成本如何?
  • 怎样做好:时效性提升幅度?资源开销曲线?不同场景表现?稳定性是否更高?

5.1 他们的“评测设计”值得你抄作业

快手从线上抽了三类典型场景:

  • 简单:几十 GB/天,计算简单
  • 中等:几 TB/天,计算简单
  • 复杂:十多张表、其中三张 10+TB/天;Join/window/UDF 多达十几个

并且明确解释“增量成本”的口径:

  • 增量成本 = 每天所有增量刷新资源累加
  • 离线成本 = 单次全量计算资源

这点非常关键,因为很多人比较时会把口径混掉。

5.2 关键结论:增量不是永远更省,但它“可控”

文章给出的结论非常务实:

  • 简单场景:资源开销 不到离线 1/20,时效可到 5 分钟甚至更低
  • 中等场景:资源开销 不到离线 1/3
  • 复杂场景:追求极致时效会更贵;当时效放宽到 50 分钟左右接近持平;90 分钟及以上增量更省(文中描述)

他们还解释了背后的影响因素:

  • 查询复杂度(Join/Agg/Window)
  • 数据变化形态(Append-only vs Update/Delete)
  • 数据变化速率
  • 调度频率

以及一个我认为决定成败的设计选择:

  • 传统 rule-based 增量计划容易在数据形态变化时出现性能大波动
  • 通过 cost-based 代价评估,每次刷新动态选最优计划,降低运维负担

我的观点:
决策者最该问的问题不是“增量能省多少”,而是“增量的成本曲线是否可预测、可调节”。
复杂场景下,增量可能出现“比全量更贵”的时间段;如果系统无法动态调整/降级,最后还是会把压力甩给人(运维背锅)。

6 案例四:数美科技——“定义即可查”:把数据平台从交付型变成自助型

来源:数美科技定义即可查(微信公众号)

如果说前三个案例主要在讲“算得更快更省”,数美这篇讲的是更上层的东西:

让业务人员自己成为分析师,让平台团队从‘提数’地狱里解放出来。

6.1 他们卡住的是“灵活字段 vs 性能”的根矛盾

  • Spark 查 JSON:灵活,但慢(数十分钟)
  • ClickHouse 宽表:快,但 schema 固化,新字段要 ETL 打平、至少 1 天

数美的业务强度也很硬:

  • 每天 100 亿次风控请求
  • 2PB 半结构化日志
  • 单表 500TB 级别 JSON 即席分析

6.2 他们的突破点:让 JSON 也拥有“宽表级”体验

文中描述的关键技术组合:

  • 原生 JSON 类型优化
  • 生成列(从嵌套 key 自定义生成)
  • 自动索引(做更好的裁剪)

最终交付一个非常产品化的能力:

  • 定义 SQL 即可直接在 500TB 原始 JSON 上秒级查询,无需 ETL

并给出了大量可引用的数据:

  • 存储 size 降低 68% (从 100TB → 32TB 的口径示例)
  • 离线加工计算 降低 66% ,实时分析计算 降低 30%
  • 查询性能:多并发场景 QPS 1830;中位数 119192ms;95% 分位 0.89~1.98s(文中表格)
  • 替换 ES:冷启动 1.4 分钟(原 Spark 30 分钟+),热查询 2.8 秒

我的观点:
“定义即可查”本质上是把数据平台从 项目交付型(工单/ETL)  变成 自助产品型(自定义查询/即席分析)
这件事的 ROI 往往比单纯省资源更大,因为它直接改变了组织协作成本:

  • 业务不再被“等数”卡脖子
  • 平台不再被“提数”耗死
  • 数据价值从“隔日复盘”跃迁为“即时闭环”

7 把四个案例揉成一张“决策路线图”:增量计算升级怎么落地?

下面是我总结的一条可复制路径(适合技术决策者拿去对齐团队):

Step 1:先选对“高 ROI 场景”,别一上来就想全域改造

优先级从高到低建议是:

  1. 指标平台 / BI 交互查询(SQL 机器生成、Join 多、口径敏感)——美团
  2. 实验 / 广告 / 推荐闭环(分钟级反馈 + 极致一致性)——小红书
  3. 离线链路提时效 + 降破线风险(把 T+1 提前到小时/分钟)——快手
  4. 半结构化日志即席分析(字段不确定,但要求快)——数美

Step 2:明确你的数据变化形态(这决定增量难度)

用一句话判断:

  • 主要是 Append-only → 增量红利最大
  • 频繁 Update/Delete/回撤(例如 outer join)→ 必须有更强的计划选择与补算能力

快手文章把这点讲得很明白:算子复杂度、数据变化、变化速率、调度频率,都会决定成本曲线。

Step 3:别只看“引擎”,把“治理/迁移门槛”放进决策指标

美团案例的“三不做”(不搬数据、不改 SQL、不迁任务)背后,是一个被严重低估的真相:

  • 升级最贵的不是机器,是组织动员成本

如果你要改上千条 SQL、改 UDF、改权限、改调度,你的项目基本就会死在中途。

Step 4:把“可调度的近实时”当成产品能力去运营

小红书/快手都强调“可灵活调节”。我建议把延迟做成可配置 SLA:

  • 核心链路:1~5 分钟
  • 非核心:10~60 分钟
  • 大促/关键窗口:临时加速

这会让你在成本和价值之间获得真正的控制力。

8 我个人认为最容易踩坑的 5 件事(比技术更致命)

  1. 把增量计算当“更快的离线”
    真正的难点是“变化”,不是“调度频率”。数据回补、晚到、更新/删除、维表变更——你要的是全链路一致性。
  2. 只算资源账,不算协作账
    “定义即可查”的 ROI 很多时候来自“组织效率”而不是 CU 账单。
  3. 没有成本曲线意识
    复杂场景下,增量可能短期更贵;关键是能不能动态选择、能不能降级、能不能让曲线可控。
  4. 模型层不做降维,指望引擎硬扛
    小红书把粒度降到 <5分钟,user_id>,这类建模往往比换引擎更有效。
  5. 忽视存量资产迁移门槛
    一旦升级要求大规模改 SQL/任务/权限,你会发现技术讨论再精彩也没用——项目推进不了。

9 结语:增量计算的终局,不是“更实时”,而是“更统一”

把四个案例放在一起,你会看到一个趋势:

  • 美团要的是 一体化统一引擎
  • 小红书要的是 近实时一致性闭环
  • 快手要的是 可验证、可调节的升级方法论
  • 数美要的是 自助化的数据产品体验

它们共同指向同一个终局:

用一套统一的存储/元数据/计算体系,让数据从“生产”走向“用数”,再走向“智能用数”。

如果你是技术决策者,我建议你把增量计算项目的成功标准改成三句话:

  1. 同一份数据,能不能同时服务离线/近实时/交互?
  2. 同一个 SQL 资产,能不能尽量不改就完成升级?
  3. 同一套团队,能不能从“救火提数”转向“建设平台能力”?

做到这三点,你的架构升级大概率就会赢。

参考资料(原文链接)