🌊
你刷支付风控、物流追踪、直播在线人数时,真正值钱的不是“今天晚上汇总出报表”,而是数据还在进来时就已经开始算
如果系统非要等一小时、一天,甚至等所有数据都落地再处理,很多决策就已经晚了。
这种“数据一边流、一边算”的方式,就叫 流处理
↓ 往下看,4 分钟搞懂

🌊 流处理

Stream Processing

不是处理得更快,而是数据还在流动时就开始算。
🧒 极简版 🧑 场景版 🎓 精准版

🗺️ 概念坐标:先知道它在哪

流处理属于“持续到来的数据怎么处理”这一类问题,它和批处理、实时计算、事件流是邻居,但不是一个词。

📦 批处理
并列对照
批处理像等一车快递攒满再一起拆。它强调吞吐和统一处理,不强调每条数据刚来就立刻有结果。
🌊 流处理 ★
本概念
它把数据当成持续不断到来的流水,而不是一坨一坨的静态文件。核心不是“快”,而是“不等全部到齐再算”。
⏱️ 实时计算
相关目标
实时计算更像目标或效果,强调结果的新鲜度。流处理是实现这类目标的常见方法,但不是唯一方法。
🪟 窗口与状态
关键机制
因为数据没有“自然结束”,流处理经常要靠窗口切一段时间来看,也要维护状态,记住前面已经发生过什么。

🧪 动手试试:批处理和流处理差在哪

拖动事件到达速度和批次间隔,再切换模式。你会看到同样的数据量,真正差别往往不在“算力”,而在“等待时间”。

到达速度
6 / 10
批次间隔
7 / 10
看图时重点观察:事件到了以后,是立刻进入计算,还是先在门口排队等一批凑齐。

📦 拆开看:流处理由什么组成

点卡片翻面,把“数据一边流、一边算”拆成几个核心零件。

📨
事件流
点我翻转
日志、点击、订单、传感器读数不断到来。流处理默认面对的是“还没结束”的数据源,而不是一份静态表格。
⚙️
算子
点我翻转
过滤、聚合、连接、转换都在算子里完成。你可以把算子理解成流水线上的一站一站处理动作。
🧠
状态
点我翻转
如果系统完全不记得前面发生过什么,就很难做计数、去重、会话分析。流处理经常是“边流边记”。
🪟
窗口
点我翻转
因为流没有天然结尾,所以很多统计要靠窗口来切,比如最近 1 分钟、最近 5 秒、某个会话期间。
💾
检查点
点我翻转
系统中途挂了怎么办?流处理通常要定期存档状态,这样恢复时能接着算,而不是从头丢失上下文。

⚙️ 它是怎么工作的

流处理真正的关键,不是把“批处理改快一点”,而是承认数据本来就不会停,然后围绕这个前提设计系统。

1

事件持续到来

用户点击、下单、支付、传感器数据、日志消息会不断进入系统。这里的数据不是“导入一次就结束”,而是持续发生。

2

系统持续接收

消息队列或流平台负责把这些事件持续送进来。此时系统面对的是一条没有天然终点的数据河流。

3

算子边收边算

过滤、聚合、连接、转换等逻辑会随着数据到达不断执行,不需要等所有输入都准备完才开始。

4

状态和窗口维持上下文

因为流没有天然结尾,系统要靠状态记住历史,用窗口定义“我现在统计的是哪一段时间”。

5

结果持续输出

告警、看板、推荐、风控和监控结果会不断更新。输出也不一定是“最终答案”,而是会随着后续数据不断修正的当前视图。

🆚 等数据攒满 vs 数据一来就算

很多业务并不是“算不出来”,而是“等到算出来时已经没用了”。

Before

如果你坚持等数据攒够一批再处理,系统会更像夜里跑一次报表。吞吐可能不差,但新鲜度会明显下降。风控、监控、推荐这类场景里,等待本身就是成本。

After

一旦切到流处理,事件到了就进入计算链路,结果会持续更新。你不需要总等“全量最终版”,而是能先拿到一个不断逼近真实的最新状态。

⚠️ 常见误解

流处理最容易被误解的地方,是大家把它想成“超快版批处理”。

流处理就是处理得特别快。
不准确。它更核心的特点是“数据没停,计算也不停”。低延迟常常是结果,但不是定义本身。
流处理就是一条消息来一条消息立刻出结果。
不一定。很多流处理也会按窗口、按状态聚合,甚至用微批方式工作。重点是持续处理,而不是必须逐条裸奔。
有了流处理,就等于解决了实时问题。
也不一定。端到端延迟还取决于采集、网络、存储、下游系统、容错策略等。流处理只是关键一环,不是魔法按钮。

🧱 类比边界

“流水线”这个类比很直观,但它也有边界。

🔗 相关概念

顺着这些概念看,流处理会更立体。

✅ 秒测

答完这 3 题,基本就能分清“流处理”“批处理”“实时”之间的关系。

1流处理最核心的特点是什么?
2下面哪个更像批处理?
3为什么流处理经常需要“窗口”和“状态”?

手机端可长按上方图片保存到相册