一、Flink 处理模型:流处理与批处理
### --- Flink 专注于无限流处理,有限流处理是无限流处理的一种特殊情况
~~~ # 无限流处理:
~~~ 输入的数据没有尽头,像水流一样源源不断
~~~ 数据处理从当前或者过去的某一个时间 点开始,持续不停地进行
~~~ # 有限流处理:
~~~ 从某一个时间点开始处理数据,然后在另一个时间点结束
~~~ 输入数据可能本身是有限的(即输入数据集并不会随着时间增长),
~~~ 也可能出于分析的目的被人为地设定为有限集(即只分析某一个时间段内的事件)
~~~ Flink封装了DataStream API进行流处理,封装了DataSet API进行批处理。
~~~ 同时,Flink也是一个批流一体的处理引擎,提供了Table API / SQL统一了批处理和流处理
二、有状态的流处理应用:
三、流处理引擎的技术选型
### --- 流处理引擎的技术选型
~~~ 市面上的流处理引擎不止Flink一种,其他的比如Storm、SparkStreaming、Trident等,
~~~ 实际应用时如何进行选型,给大家一些建议参考
~~~ 流数据要进行状态管理,选择使用Trident、Spark Streaming或者Flink
~~~ 消息投递需要保证At-least-once(至少一次)或者Exactly-once(仅一次)不能选择Storm
~~~ 对于小型独立项目,有低延迟要求,可以选择使用Storm,更简单
~~~ 如果项目已经引入了大框架Spark,实时处理需求可以满足的话,
~~~ 建议直接使用Spark中的SparkStreaming
~~~ 消息投递要满足Exactly-once(仅一次),数据量大、有高吞吐、低延迟要求,
~~~ 要进行状态管理或窗口统计,建议使用Flink