实时流式处理架构旨在不断提取、处理和分析数据,从而实现近乎实时的决策和洞察。它们需要具有低延迟、处理高吞吐量数据量,并在发生故障时具有容错能力。该领域的一些挑战包括:
-
读取 – 以高吞吐量从各种数据源、格式和结构中提取,即使在高容量数据流爆发期间也是如此
-
处理 – 确保精确地处理一次(且只处理一次)语义,同时以可扩展和容错的方式处理状态计算、乱序事件和延迟数据到达等复杂性
-
实时分析 – 对从流源持续提取和处理的新数据实现低延迟查询响应,而不会影响数据完整性或一致性
单个技术组件很难满足所有要求。所以实时流式处理架构一般由多个协同工作的专用工具组成。
Apache Kafka、Flink 和 Pinot 简介
让我们深入了解一下 Apache Kafka、Flink 和 Pinot 的概述,这些核心技术为实时流式处理系统提供支持。
Apache Kafka
Apache Kafka 是一个分布式流式处理平台,充当实时数据管道的中枢神经系统。Kafka 的核心是围绕发布-订阅架构构建的,其中创建者将记录发送到主题,使用者订阅这些主题以处理记录。
Kafka 架构的关键组件包括:
-
代理是存储数据并为客户端提供服务的服务器。
-
主题是记录发送到的类别。
-
分区是用于并行处理和负载平衡的主题划分。
-
使用者组使多个使用者能够有效地协调和处理记录。
Kafka 是各行各业实时数据处理和事件流的理想选择,其主要功能包括:
-
高吞吐量
-
低延迟
-
容错
-
耐久性
-
水平可扩展性
Apache Flink
Apache Flink 是一个开源流处理框架,旨在对无界和有界数据流执行有状态计算。它的架构围绕分布式流式数据流引擎展开,确保应用程序的高效和容错执行。
Flink 的主要功能包括:
-
支持流式和批处理
-
通过状态快照和恢复实现容错能力
-
事件时间处理
-
高级窗口功能
Flink 与各种数据源和接收器集成,源是 Flink 处理的输入数据流,而接收器是 Flink 输出处理数据的目的地。支持的 Flink 源包括 Apache Kafka 等消息代理、HDFS 和 S3 等分布式文件系统、数据库和其他流数据系统。同样,Flink 可以将数据输出到各种 sink,包括关系数据库、NoSQL 数据库和数据湖。
Apache Pinot
Apache Pinot 是一种实时分布式在线分析处理 (OLAP) 数据存储,专为对大规模数据流进行低延迟分析而设计。Pinot 的架构旨在高效处理批处理和流数据,并提供即时查询响应。Pinot 擅长对从 Kafka 等流式源提取的快速