Flink 的适用场景
in Note with 0 comment
Flink 的适用场景
in Note with 0 comment

虽然我之前写过一篇《Flink 是什么》,但更多是基于外围,第三者的角度去观察 Flink,缺乏当事人的角度,总觉得欠了点什么,后面想了想我觉得主要是缺了 Flink 使用案例,Flink 是如何支撑这些案例,这些知识可以帮助初次接触者更好理解工具的用途。

整体

1549975367970-7ec9b29a-e775-43a8-bb91-1fe74a64738b-image-resized.png

这张图来自官方首页,这张图非常精致描绘 Flink 的适用场景。上游原始数据,例如事物、日志、IOT、点击业务数据等等,通过队列、数据库等方式作为数据源与 Flink 对接;Flink 有三种处理场景,分别是事件驱动、流管道、和流分析或批分析,将原始数据转换为有价值的数据(业务);最后将数据输出到数据库或者应用中。

下面参考官方文档 Use Cases,详细说明 Flink 提供支持的最常见类型的应用程序,并指出实际示例。

体系结构图

我们先来看上述所讲的三种类型的体系结构图:

事件驱动

1549976022739-8e3c77e9-4a7b-413d-8c33-6e7c5cf79bf8-image-resized.png

数据分析

1549976028386-6b7d78af-34ed-45ca-aafd-86715f40a262-image-resized.png

数据管道

1549976037497-d71658ea-94d2-48e4-97a2-9226e2c812fd-image-resized.png

三者优点

事件驱动
定义:事件驱动的应用是一个有状态的应用,它从一个或多个事件流中提取事件,并通过触发计算,状态更新或外部操作对传入事件做出反应。
优点:1、本地访问数据,吞度量和延迟方面具备更好的性能;2、检查点对常规事件处理的影响非常小;3、对数据表示的更改或扩展应用程序需要较少的协调。

数据分析
定义:分析工作从原始数据中提取信息和洞察力,传统上,分析在记录事件的有界数据集上作为批量查询或应用程序执行。为了将最新数据合并到分析的数据集中,并重新运行查询或应用程序。结果将写入存储系统或作为报告发出。
优点:1、消除定期导入和从事件到洞察的查询执行低得多的延时;2、流式查询不必处理输入数据中的人为边界;3、flink 复杂流处理引擎具备优秀的故障恢复机制。

数据管道
定义:提取-转换-加载(ETL)是在存储系统之间转换和移动数据的常用方法。通常会定期触发 ETL 作业,会将数据从事务数据库系统复制到分析数据库。
优点:1、相比周期性ETL,减少了将数据移到到目的地的延迟;2、更通用、能够连续消耗以及发送数据。

Flink 支持

事件驱动
1、丰富的状态原语,可以管理非常大的数据量(最多几TB),并且具有一次性的一致性保证;2、支持事件时间、高度可定制的窗口逻辑;3、通过ProcessFunction实现高级业务逻辑提供的细粒度时间控制;4、用于复杂事件处理(CEP)的库,用于检测数据流中的模式。

数据分析
1、连续流式传输和批量分析提供了非常好的支持;2、具有符合ANSI标准的SQL接口,具有用于批处理和流式查询的统一语义;3、支持用户定义函数;4、DataStream API 或 DataSet API 提供更多的低级控制;5、Flink 的 Gelly 库为批量数据集上的大规模和高性能图形分析提供算法和构建块。

数据管道
1、Flink 的 SQL 接口(表接口);2、支持用户定义函数;3、使用DataStream API, 可以实现具有更高级要求的数据管道;4、丰富的连接器、连接的文件系统源以及用于监视以时间分区方式写入文件目录和接收器。

使用场景

事件驱动
1、欺诈识别;2、异常检测;3、用于规则的警告;4、业务流程监控;5、Web 应用程序(SNS)。

数据分析
1、电信网络的质量监控;2、分析移动应用程序中的产品更新和实验评估;3、对消费者技术中的实时数据进行特别分析;4、大规模图分析。

数据管道
1、电子商务中的实时搜索索引构建;2、电子商务中持续的ETL。

Flink应用案例

基于上面的案例分析,Flink 非常适合于:


👊 结束。

Responses