流处理平台与 Apache Flink 实战解析
1. 流处理平台概述
近年来,流处理平台如雨后春笋般涌现,有开源的、专有的,还有云服务提供商提供的各种解决方案,它们各有优缺点。不过,不同平台的底层架构和机制却颇为相似。
1.1 基本架构
数据通过各种数据源提供给平台,常见的数据源有队列(如 Kafka 主题)或分布式存储系统中的文件(如 S3)。流处理节点从数据源摄取数据对象,进行转换、聚合以及特定于应用的业务逻辑处理。这些节点以有向无环图(DAG)的形式组织。数据源产生的数据对象以流的形式进行处理,数据流是一个个数据对象组成的无界序列。由于数据对象在处理节点之间传递或流动,流处理应用也被称为数据流系统。
流处理系统具备将一个节点的输入流转换为新流,并由一个或多个下游节点进行处理的能力。例如,交通应用可以从公交车位置变更事件流中,每 30 秒生成一个当前公交车位置的新流。
1.2 应用类型
流处理应用主要有两种类型:
- 无状态流处理应用 :这类应用简单地处理和转换流中的单个事件,无需每个事件的上下文或状态信息。例如,输入可穿戴设备的最新数据更新流,将单个数据对象转换为代表用户最新步数、心率和每小时活动数据的其他对象。处理结果会写入数据库或队列等数据汇,供下游异步处理(如计算静息心率、消耗的卡路里等)。
- 有状态流处理应用 :部分流处理应用需要在处理流中单个数据对象时维护持久状态。例如,交通监控应用必须了解所有正在行驶的公交车,并维护过去 30 秒内的位置更新状态;欺诈检测应用需要维护识别可疑交易所需的当前模型参数
超级会员免费看
订阅专栏 解锁全文
1177

被折叠的 条评论
为什么被折叠?



