Flink可以完成数据的实时采集、实时计算和下游发送。
一、应用场景
1、实时计算
Flink 在实时数仓和实时 ETL 中有天然的优势:
- 状态管理,实时数仓里面会进行很多的聚会计算,这些都需要对于状态进行访问和管理,Flink支持强大的状态管理
- 丰富的API,Flink提供极为丰富的多层底API,包括Stream API,Table API以及Flink SQL
- 生态完善,实时数仓的用途广泛,Flink支持多种存储(HDFS、ES等)
- 批流一体,Flink已经在将流计算和批计算的API进行统一
2、事件驱动
事件驱动型应用是一类具有状态的应用,他从一个或多个事件流提取数据,并根据到来的事件出发计算、状态更新或其他外部动作。
Flink的以下特性完美的支持了事件驱动应用:
- 高效的状态管理,Flink自带的State Backend可以很好的存储中间状态信息
- 丰富的窗口支持,Flink支持包含滚动窗口、滑动窗口已经其他窗口
- 多种时间语义,Flink支持Event Time,Processing Time和Ingestion Time
- 不同级别的容错,Flink支持At least once或Exactly once容错级别
二、架构模型
1、Flink的分层模型