1. 实时计算赛道,为什么2026年必须重新选型
这两年做数据架构的朋友应该都有同感,实时计算已经不是"要不要上"的问题,而是"怎么选、怎么用、怎么不被坑"的问题了。光是Flink版本迭代、Kafka链路调优、数据湖与流式计算的边界融合,就足够让技术负责人头疼。而到了2026年,国产实时计算平台不再是过去那种"能用但差点意思"的状态,大量项目开始从自研框架或开源裸奔切到体系化的平台方案,选型的复杂度反而比三五年前更大了。
这篇文章不吹不黑,就站在一个常年和流式计算打交道的从业者视角,把2026年市面上活跃的国产实时计算平台做一次系统盘点。我会从底层开源引擎、商业发行版、云原生托管服务这三个维度拆解,重点对比它们在架构、性能、成本、迁移难度上的差异,同时会结合我实际落地过的几个场景,说说哪些平台适合哪类业务,哪些坑是你试用时根本看不出来的。无论你是团队里负责技术选型的人,还是准备把实时链路真正跑起来的开发,这篇都能给你一个清晰、可落地的参考坐标。
为了照顾不同基础的读者,我会先用最直白的方式讲清楚实时计算平台到底解决什么问题,再逐层展开对比。基础概念已经烂熟于心的同学,可以直接跳到你关心的章节。
2. 先搞清楚一件事:实时计算平台到底在解决什么问题
很多团队在选型时犯的第一个错误,是根本没把"实时计算"和"实时查询"分清楚。这俩听着像一回事,实际是完全不同的技术路线。你如果拿做实时数仓的架构去支撑实时查询,或者反过来用一套即席查询引擎去跑持续计算,结果往往是很惨的——要么延迟下不来,要么吞吐上不去,要么资源浪费得让人肉疼。
2.1 实时计算、实时查询、实时OLAP,三者的本质差异
实时计算,核心是一个"持续计算"的模型。数据源源不断进来,计算引擎持续不断地执行有状态的计算逻辑,比如窗口聚合、事件驱动报警、实时特征提取,然后把结果写到下游。它对标的是传统的批量计算(Batch),核心指标是"端到端延迟"和"吞吐稳定性"。典型代表就是Flink、Spark Streaming。
实时查询,核心是一个"低延迟响应"的能力。数据预先存好,用户随时发起查询,系统要在毫秒到秒级把结果返回。它对标的是传统离线数仓的查询引擎,核心指标是"查询延迟"和"并发能力"。典型代表是ClickHouse、Doris、StarRocks。
实时OLAP,可以理解成上面两者的融合形态,它既能支撑实时写入的明细数据即时可见,又能保证多维分析的查询性能。近几年火热的"实时数仓"概念,本质上就是一个由实时计算引擎+实时OLAP引擎联合搭起来的架构:Flink负责把数据算好、写进OLAP引擎,OLAP引擎负责让业务方随时查。
2.2 平台化之前,团队自己搭Flink链路要面对什么
早几年我们团队也干过"纯手工搭建"的活:自己部署Flink集群、自己管理Checkpoint、自己写告警脚本、自己维护任务版本……听起来很极客,实际跑起来全是泪。流式任务不像离线任务,跑完就结束了。流式任务是7×24小时挂着的,你睡觉它也在跑,一出问题你要么被半夜叫起来,要么被业务方第二天追着问昨天的数据为什么不对。
时序、乱序、状态后端膨胀、反压、故障恢复、多集群资源隔离,每一样都可以单独写一篇踩坑长文。尤其在业务规模上来之后,几十个实时任务挂在集群上,任务和任务之间资源怎么隔离、日志怎么看、告警怎么定阈值、版本怎么灰度上线,这些"工程化"的问题远比"计算逻辑怎么写"更耗人。而国产实时计算平台的兴起,本质上就是把这一大堆运维和治理成本,收拢成一套可配置、可观测、可管控的产品能力。
3. 底层引擎格局:Flink依然是基石,但国产化的角色变了
聊国产实时计算平台,绕不开底层引擎。2026年这个节点,绝大部分国产平台底层都是建立在Apache Flink之上的,这几乎是行业共识。但不同产品对Flink的改造深度、周边配套的完整度,差距极大。
3.1 Flink在国产化演进中的真实地位
Flink是一个开源分布式处理引擎,它最大的优势是有状态流处理模型。用一句话解释它的核心思想:把任意数据流当作一个永不结束的输入,引擎负责把计算状态持久化,在节点故障时保证精确一次(Exactly-Once)的语义。它不需要像Spark Streaming那样做"微批"切分,所以延迟可以做到亚秒级。
国产平台基于Flink做商业化,大的路径有三条。第一条是直接托管开源的Flink,把部署、监控、运维做成平台,业务代码还是写Flink的API或SQL;第二条是深度改造Flink内核,比如优化StateBackend、改进调度策略、自研Shuffle服务,再把平台能力套在上面;第三条是干脆换掉执行引擎,只在生态和接口层面保持Flink兼容,比如字节跳动的Flink Forward思路,或者一些公司自研的流计算引擎最后又回归到Flink兼容协议上。
2026年更明显的趋势是,绝大部分用户已经实际"不再直接面对Flink",而是面向一个SQL任务、一个流编排DAG、一套监控大盘。引擎是谁、内部怎么调度,对业务团队已经是黑盒。这既是平台成熟的表现,也是选型时更大的挑战——你没法轻易判断平台底子里到底改了什么、改了的是否是你要的那部分。
3.2 除了Flink,还有哪些引擎值得放进对比清单
Flink虽然主流,但不是唯一选择。2026年你仍然会遇到一些团队用Spark Structured Streaming,特别是在和数仓生态绑定较深的场景;也有团队用Kafka Streams做轻量级的链路处理,简单场景下反而更稳;还有少量自研引擎,但基本只活跃在个别大厂内部。
| 引擎 | 核心模型 | 延迟级别 | 优势场景 | 主要局限 |
|---|---|---|---|---|
| Apache Flink | 有状态流处理(事件驱动) | 毫秒~秒级 | 复杂事件处理、窗口聚合、实时数仓 | 运维成本高,资源管理较复杂 |
| Spark Structured Streaming | 微批处理(可配Continuous) | 秒级~分钟级 | 与Spark生态共存、批流一体 | 状态管理弱于Flink,延迟偏高 |
| Kafka Streams | 库形态的流处理 | 毫秒~秒级 | Kafka生态内的轻量ETL | 不适合复杂有状态计算,生态有限 |
| 自研引擎 | 各家不同 | 不定 | 个别大厂超大规模场景 | 社区缺失,外部复用成本极高 |
坦白说,如果你要新起一套实时链路,我的建议仍然是优先考虑Flink系的平台。它在状态管理、窗口语义、故障恢复上的成熟度是其他引擎短期内追不上的。但如果你团队的技术栈已经深度绑定Spark或Kafka,硬换Flink不一定划算,后面我会具体分析什么场景可以保留原引擎。
4. 国产实时计算平台全景:三大类型的代表与定位
2026年的国产平台,我习惯把它们分成三大类来对比:第一类是"纯开源引擎发行版",第二类是"商业大数据平台中的实时计算模块",第三类是"云原生实时计算托管服务"。这三类并不是谁替代谁的关系,而是对应不同团队规模、不同成本预算、不同运维能力的选型路径。
4.1 第一类:开源引擎发行版
最典型的代表是Flink Forward的中文生态圈里各家推出的Flink发行版,以及一些基于Flink搭建的一体化开源平台项目。这类方案的共同特点:底层是开源引擎,平台本身也以开源形式交付,你可以自己下载、自己部署、自己定制。
我实际用过的是某厂开源的StreamPark,这个项目在运维Flink任务和SQL化开发方面做得比较早。它解决的最大痛点是任务管理,包括作业开发、部署、启动、Savepoint管理、日志收集一整套流程,把原来裸写Flink时的很多手工操作变成可视化页面。优点是开源免费、灵活可控,适合有余力维护平台的团队;缺点也很明显——监控告警、权限体系、多租户资源隔离这些企业级能力相对薄弱,需要你二次开发。
另一类发行版思路是对Flink内核本身做增强,比如优化StateBackend性能、引入存算分离架构。这类产品通常以商业授权形式提供,源码不一定全量开放,江湖上称"开源核心+商业扩展"模式。它们适合那些业务复杂、对底层性能有极致要求,但又不愿意完全绑定云厂商的团队。
4.2 第二类:商业大数据平台中的实时计算模块
这类选手往往以"一站式大数据平台"的形态出现,实时计算只是平台众多子模块之一。它们的逻辑是:你反正要建数仓、做数据治理、跑离线任务,不如把实时计算也放进来,统一管理、统一权限、统一调度。
从架构上看,这有点类似"全家桶"的捆绑思路。优点是数据链路打通得很顺——离线、实时、即席查询、数据质量、元数据管理都在同一个体系内,业务侧不用来回切换系统,权限也能一套账号管到底。缺点是模块间集成度参差不齐,一些平台的实时计算模块本质上是"嵌了一个Flink,套了一层壳",核心能力并没有太多深度自研,你买的是商业闭源产品的生态整体价值。
代表产品在市面上不少,比如一些核心做数据中台、数据治理起家的厂商,这两年都把实时计算提到了比较重要的位置。选这类平台的关键不只是看实时模块本身,还要结合你团队对"全家桶"的接受度。如果你只想要一个实时计算平台,却被迫要接受一堆用不上的离线能力,性价比是要打折扣的。
4.3 第三类:云原生实时计算托管服务
这是过去三年发展最快、也是目前大量中小企业最常用的一类。云厂商把Flink集群的部署、弹性伸缩、监控告警、权限安全、资源隔离全部包装成开箱即用的服务,你只需要在控制台创建项目、写SQL、提交作业,底层不用你操心。
云原生托管服务最大的价值不是"省了部署的功夫",而是它把弹性伸缩和按量付费做进了产品底层。实时任务的流量往往有波峰波谷,自建集群你得按峰值预留资源、忙时可能还要人工扩容,托管服务则可以做到吞吐变化时自动扩缩容,成本模型更健康。国内云厂商的实时计算服务在产品形态上已经比较成熟,包括阿里云实时计算Flink版、腾讯云流计算Oceanus、火山引擎流式计算等,都支持Flink SQL和DataStream API,且都提供了常用的连接器。
我对这类服务的态度一直是:如果你的业务跑在公有云上,运维人力又有限,托管服务是最省心的选择。但要注意两点:一是定价模型。实时计算的资源费用往往按CU(Compute Unit)计费,再叠加存储和公网流量费用,看似便宜,跑起来账单可能吓你一跳;二是绑定问题。虽然Flink本身开源,但托管平台的很多辅助能力,比如自定义连接器、状态查看、调优建议,往往和云平台深度绑定,将来想迁走并不容易。
5. 横向对比:性能、成本、迁移性、生态,逐个拆开说
选型不能只看厂商宣传的"性能提升XX%",那些数字在特定benchmark下测出来,换到你的业务场景未必成立。我更建议从性能表现、成本模型、迁移难度、生态完整性四个维度去横评。
5.1 性能:SQL优化器、状态管理、多集群调度是关键
实时计算平台的性能,表面上看是引擎执行速度快不快,实际上是三层能力叠加的结果:SQL优化器能不能把用户写的逻辑翻译成高效的执行计划;状态管理能不能在状态规模大、访问频繁时保持低延迟;多集群调度能不能在资源利用和任务隔离之间找到平衡。
以SQL优化为例,用户写一个简单的JOIN+GROUP BY,不同平台生成的执行计划差距很大。有的优化器会做谓词下推,提前过滤无关数据;有的会做状态分区裁剪,减少无谓的Key数量;有的则停留在"能跑就行",集群压力一大,反压立刻出现。这些细节平时看不见,等到业务数据量上来才见真章。
我自己的体会是,平台对开源Flink内核的跟进速度很能说明问题。Flink社区每年都有重要版本更新,比如状态后端优化、窗口性能提升、流批一体能力增强等,哪个平台跟进得快,底子通常不会差;哪个平台停留在老版本上迟迟不升,多半是内核改造太深、失去跟随社区的能力,这类平台你要谨慎。
5.2 成本:算力单价只是入门,隐性成本才是坑
成本是选型时最容易误判的维度。很多团队比价时只看一CU多少钱,实际跑起来发现成本远超预期。原因在于实时计算的成本不仅仅是算力,还包括:
- 状态存储成本,尤其使用RocksDB状态后端时,磁盘占用往往比想象中大;
- 磁盘和网络开销,大量内部Shuffle会消耗巨大的带宽和临时存储;
- 额外组件成本,比如依赖Kafka做上下游存储,Kafka的Broker和存储也要算钱;
- 运维人力成本,自建方案里这部分最容易被低估。
以一个日活百万的中型业务为例,按每天处理几十亿条事件来估算,实时计算集群加上Kafka链路,云上托管方式一个月花到几万块是很平常的。而自建集群看起来只花了机器钱,但算上DBA和运维工程师的工时,可能更贵。所以成本对比一定要按"全链路总体拥有成本"来算,而不是盯着一项单价。
5.3 迁移性:一旦写进业务代码,换平台的成本远超想象
我见过太多团队在做选型时把"以后可以随时迁移"当作安慰自己的理由。现实是,一旦你在平台上跑了半年以上的生产任务,换平台的成本绝不只体现在迁代码上。你的UDF、连接器、告警配置、参数调优经验、业务方的使用习惯,全都长在了这个平台上。
平台的连接器生态是迁移难度最重要的变量。如果你的数据源和目标系统都有官方连接器,迁移就是改写SQL;如果平台只提供了基础连接器,特殊的数据源要靠你自研或不支持,那迁移成本会成倍上升。建议在选型阶段就列出你团队真正依赖的数据源清单,逐个对照平台支持情况,不要看官网上"支持XX余种连接器"的总数,要看有没有你要的那几个。
此外,Flink版本差异也需要留意。同样是Flink 1.17,开源版和商业发行版在底层可能完全不同。自研连接器在不同版本间的兼容性、Savepoint是否能跨平台恢复,这些都是迁移时才会暴露的坑。
5.4 生态:连接器、UDF、周边工具链到底全不全
生态完整度在这里包含几层:一是连接器覆盖范围,这直接决定了你能接入的数据源和能写入的目标系统;二是UDF和自定义函数支持,灵活的业务逻辑往往逃不开写UDF;三是周边工具链,包括任务调度、血缘追踪、指标监控、日志检索、告警通知,是不是都能在体系内闭环。生态不是越多越好,而是"需要的能力恰好都有,不需要的能力别出来捣乱"。
血缘追踪是我个人特别看重的能力。实时任务一旦多了,一个数据指标出错,要反查是哪张表、哪个任务、哪段逻辑造成的,如果没有血缘工具,排查起来会是一场灾难。所以选型时我通常会拿血缘能力作为平台成熟度的一个参考信号。
6. 几个真实场景下的选型建议
讲了这么多抽象对比,落到具体场景里怎么做选择,才是最关键的。我挑三个常见场景说。
6.1 中小团队、业务快速迭代:首选云托管,别犹豫
如果你的团队是几十人甚至更小的规模,没有专职的数据平台团队,业务又快节奏地迭代,我强烈建议直接选云厂商的托管实时计算服务。理由很简单:你们最缺的是时间,最消耗不起的是运维,云托管虽然贵一点,但买的是稳定性和开发效率。
使用上建议直接走SQL化开发,不要让业务方写DataStream。SQL的上手门槛低、审查方便、平台优化空间大,能覆盖绝大多数实时场景。团队里的高级工程师可以负责封装常用UDF和连接器配置,把最佳实践沉淀成模板,让普通开发也能快速产出合规的实时任务。
6.2 传统企业、强数据合规要求:商业平台全家桶更稳
金融、运营商、政企这类行业,往往有比较强的数据合规要求,数据要留在私有化环境里,权限审计要完整,还要跟既有的大数据平台体系打通。这种场景下,选择商业大数据平台全家桶里的实时计算模块,比云托管更适合。
私有化部署前提下,开源方案虽然也能落地,但你要自己承担安全加固、权限接入、与内部认证体系对接的活,工程量不小。商业全家桶虽然贵,但能省掉这些隐性成本,也更符合合规审计的诉求。选型时重点考察平台方在实时计算上的投入力度,比如有没有独立的实时计算产品线、社区活跃度如何、售后响应的时效承诺,避免选到"附带做做实时"的厂商。
6.3 大厂或规模化数据团队:兼顾可控性与性能,考虑发行版或深度自建
团队规模大、有专门的数据平台组、对底层引擎有掌控力的组织,可以考虑深度自建或采用开源发行版方案。原因很简单,云托管和商业全家桶虽然省心,但在超大规模、复杂业务场景下,平台层之上往往还有一些无法通过配置解决的需求,比如定制的调度策略、自定义的状态清理逻辑、特殊的序列化协议等。
深度自建并不一定要从零写引擎,更建议基于开源Flink做二次开发,同时用StreamPark这类开源平台把运维管理做起来。这样既能掌控核心链路,又不用重复造轮子。团队里至少要保持一两个能深入Flink源码的人,否则自建后运维压力会集中在这几个人身上,风险不小。
7. 选型前必须想清楚的五个实战问题
有段时间我帮一个朋友团队做选型评估,发现他们列了一堆对比表格,从功能到性能、从价格到服务对比得无比详尽,却忽略了一些更根本的问题。这里我梳理成五个问题,建议每个准备选型的团队都先过一遍。
7.1 你的实时场景到底是"真实时"还是"伪实时"
很多业务的实时需求,其实是分钟级的准实时就够了。比如每隔5分钟同步一次数据到数仓,这在Spark Streaming或者定时调度里就能实现,根本不需要Flink。如果用Flink去做这种伪实时需求,不仅复杂度上来了,成本也白白翻倍。选型前一定要确认,业务方的"实时"到底意味着什么,建议把所有实时需求列出来,标注真实延迟要求,再决定要不要上重引擎。
7.2 团队的技术栈和历史包袱在哪个方向
选型不是从零选最优,而是在历史包袱里找最优。团队如果已经深度绑定Spark生态,所有离线计算都跑在Spark上,数据开发都是Spark SQL的技能,那新起实时计算时,Spark Structured Streaming的推荐权重就应该适当调高,即使它的流处理能力弱于Flink。反过来,如果团队本来就在用Flink做离线批处理,流批一体就是个自然的方向。不要迷信"单点最强",要信"整体最顺"。
7.3 业务增长带来的数据规模你有没有估算过
我见过不少团队,选型时按当下的数据量评估,上线半年后数据量翻了十倍,平台立刻就撑不住了。实时计算的资源消耗和数据量往往不是线性关系,尤其是复杂关联和窗口计算,出现超线性增长非常常见。选型时建议按未来一到两年的预期数据量做一个压力评估,资源预留的系数宁可高一点,也不要卡着临界线跑。
7.4 平台出了问题,你找谁、多久能找到
自建方案对应的是自己的团队,开源社区、各种技术群里问,快慢看人品;商业平台看SLA承诺和售后响应机制;云托管看工单响应速度和技术支持的深度。这里有个细节很多人忽视:出了问题之后,平台方能看到的日志和诊断信息到底够不够。有的平台连作业级别的状态、反压监控、错误日志都提供不全,出问题时你只能干瞪眼。选型时可以把故障演练当成一个重要环节去考察。
7.5 你是否有清晰的退出预案
这也可能是最反直觉的一条:选型时就该想好退出策略。无论选哪家,建议都要求能导出作业的完整配置、SQL定义,并且定期保存Savepoint到你能控制的位置。这些是将来迁移的"逃生舱"。尤其是选云托管服务的团队,务必了解平台是否支持从JAR或SQL中导出完整任务定义,以及Savepoint的存储方式是否开放。把退出预案想清楚再进场,远比进场后发现问题要踏实得多。
8. 一些容易被忽视的细节和我的个人体会
最后说几个我踩过或者观察到的细节,供你参考。有些看似不起眼,实际影响很大。
8.1 版本升级是长期持有成本,不是一次性决策
实时计算平台不是装上就完事,引擎版本升级是一个长期问题。开源Flink社区半年左右会有新版本,平台方什么时候跟进、升级过程对已有任务是否兼容、能否做到灰度升级,这些都是选型时需要关注的点。有些平台升级必须停机,有些能滚动升级,体验差很多。建议在合同或服务条款里明确版本升级的机制和SLA,避免之后被动等升级。
8.2 环境隔离和资源配额,比你想的还重要
多团队共用一套实时平台时,资源隔离做不好,任何团队的突发流量都可能干扰到其他团队的任务。我之前就遇到过因为一个团队的数据量激增,导致同一集群上其他团队的作业全部反压的惨痛案例。选型时重点问清楚:平台是否支持Namespace级别的资源隔离,单个任务最大资源是否有限制,出现资源争抢时任务的优先级怎么排。这些比"支持多租户"这五个字要实在得多。
8.3 实时数据链路一定要有演练意识
实时计算平台再稳,数据源上游抖动、下游服务不可用也会导致链路血崩。很多团队在选型时只测平台的理想性能,没有做故障演练,结果上线后一遇到上游断流就手忙脚乱。建议在平台落地初期就规划故障演练,包括Kafka断流、下游写入失败、状态后端磁盘打满、任务重启等场景,把恢复手册写清楚。这个过程能帮你发现平台在异常场景下的真实表现,比读一百页产品文档都有价值。
8.4 个人经验之谈:从"能用"到"好用",中间隔着一整套工程化细节
做了这些年实时计算相关工作,我最大的感触是,选平台不是在选"哪个引擎最强",而是在选"哪个平台的工程化细节最适合我的团队"。SQL开发体验、任务的版本管理、指标监控的完整度、告警通知的灵活度、UDF的管理方式,这些不起眼的小事,才是决定你和你的团队每天工作是否顺心的关键。性能指标再漂亮,如果开发同学每次写任务都要跟平台斗智斗勇,这个平台就不算真正适合你。
最后再分享一个小技巧:正式选型前,别只让架构师去看文档,拉上一线开发的同事一起试用,让他们在真实业务场景里写几个典型任务跑一跑。他们的体感,往往比任何参数对比都能更快帮你做出正确的决定。实时计算技术一直在演进,没有哪个平台是永远的最优解,适合你团队现状和未来发展的,就是当下最值得选的。