「13章」Flink 从0到1实战实时风控系统
Flink是一个分布式流处理和批处理计算框架,具有高性能、容错性和灵活性。以下是对Flink的详细介绍:
一、定义与起源
Flink是一个开源的流处理框架,最初由柏林工业大学的研究人员开发。其核心目标是在数据流上进行有状态的计算。Flink最初被称为Stratosphere,是一个旨在开发下一代大数据分析平台的研究项目。2014年3月,Flink作为Stratosphere的一个分支,成为Apache孵化器项目。同年12月,Flink被接受为Apache的顶级项目。
二、核心特性
处理无界和有界数据:无界流有一个起点,但没有定义的终点;有界流则具有定义的开始和结束。Flink擅长处理这两种数据集。
分布式架构:Flink程序可以运行在分布式环境下,具有高性能架构。
高可用性:在分布式系统中,Flink不仅提供故障处理,还能持久化服务内部各个组件的当前状态,保证7x24小时稳定运行。
准确性:Flink可以保证数据处理的准确性。
低延迟:Flink能够以毫秒级的延迟处理数据流,适用于实时应用场景。
高吞吐量:Flink能够处理非常大规模的数据,并实现高度的并行计算。
灵活性:Flink支持多种数据处理模式,包括批处理、流处理和迭代处理,以及多种数据源和数据接收器。
可伸缩性:Flink能够在大规模的集群上运行,并自动进行任务分配和资源管理。
三、核心组件与架构
Flink的核心架构中包含两个重要角色:JobManager和TaskManager,它们构成了一个典型的Master-Slave架构。
JobManager:Flink集群的主节点,负责接收和处理用户提交的作业。具体职责包括解析和验证用户提交的作业、生成执行计划、将作业图分发给TaskManager、协调任务的调度和执行、管理作业的状态和元数据信息等。
TaskManager:Flink集群的工作节点,负责执行具体的任务。每个TaskManager可以运行多个任务(子任务),每个子任务运行在一个单独的线程中,共享TaskManager的资源。具体职责包括接收并执行JobManager分配的任务、负责任务的数据处理、状态管理、故障恢复等操作,以及将处理结果返回给JobManager。
此外,Flink的架构还包括应用层、API层和运行时层等。
四、关键机制
Checkpoint机制:Flink实现了分布式一致性的快照,提供了exactly-once的语义。这意味着在发生故障时,Flink可以确保数据处理的一致性和准确性。
Watermark机制:Flink实现了watermark机制,解决了基于事件时间处理时的数据乱序和数据迟到的问题。
窗口函数:Flink提供了一套开箱即用的窗口操作,包括滚动窗口、滑动窗口、会话窗口等,还支持非常灵活的自定义窗口以满足特殊业务的需求。
五、应用场景
在线系统:实时计算各类数据指标,并利用实时结果及时调整在线系统的相关策略,应用于内容投放、智能推送等领域。例如,淘宝的双十一实时战报大屏就是利用流式计算得出实时结果。
监控预警:对系统和用户行为进行实时监测和分析,以便及时发现危险行为,如基于规则的报警。
数据分析:从原始数据中提取有价值的信息和指标,实时输出。例如,电信网络质量监控就是数据分析任务的一个应用实例。
实时报表:实时采集、加工流式数据并存储,实时监控和展现业务、客户各类指标,实现数据化运营的实时化。
数据管道应用:数据管道可以用来监控文件系统目录中的新文件,并将其数据写入事件日志。另一个应用可能会将事件流物化到数据库或增量构建和优化查询索引。例如,电子商务中的持续ETL就是数据管道应用的一个实例。
六、版本更新
Apache Flink社区不断对Flink进行更新和改进。例如,Flink 2.0版本引入了存算分离状态管理、物化表、批作业自适应执行等激动人心的功能和改进。然而,请注意,预览版不应应用于生产环境。
综上所述,Flink是一个功能强大、灵活且高效的分布式流处理和批处理计算框架,具有广泛的应用前景和发展潜力。


雷达卡


京公网安备 11010802022788号







