
282
|
第
14
章
流式处理
这种范式是连续的、非阻塞的。流式处理填补了请求与响应范式和批处理范式之间的空
白。在请求与响应范式世界里,处理一个事件可能只需要
2
毫秒
,而在批处理范式世界
里,可能每天只处理一次数据,并且需要
8
小时才能完成
。大多数业务不要求亚毫秒级
的响应,但也不能等到第二天。大多数业务流程是持续进行的,只要业务报告保持更
新,业务产品线应用程序能够持续响应,处理流程就可以进行下去,不一定需要毫秒级
的响应。具有持续性和非阻塞特点的业务流程,比如针对可疑信用卡交易或网络发送告
警、根据供应关系实时调整价格、跟踪快递包裹,都可以选择这种范式。
需要注意的是,流式处理的定义不依赖于任何一个特定的框架、
API
或特性
。只要持续地
从一个无边界的数据集读取数据,处理它们并生成结果,就是流式处理。重点是,整个
处理过程必须是持续的。每天凌晨两点启动,从流里读取
500
条记录
,生成结果,然后结
束,这样的处理流程算不上是流式处理。
14.2
流式处理相关概念
流式处理与其他数据处理非常相似——写一些代码来接收数据,对数据做一些处理(转
换、聚合、增强等),然后把生成的结果输出到某个地方。不过,流式处理有一些特有的
概念,那些有数据处理经验但刚开始尝试开发流式处理应用程序的人很容易混淆它们。下
面我们将试着澄清这些概念。
14.2.1
拓扑
一个流式处理应用程序包含一个或多个处理拓扑。处理拓扑从一个或多个源数据流开始,
经过满是流处理器的图路径,直到结果被写入一个或多个目标数据流。每个流处理器都是
一个应用在事件流上的事件转换计算步骤。本书示例中使用的一些流处理器有过滤器、计 ...