会挽雕弓如满月,西北望,射天狼。 --- 苏轼【江城子·密州出猎】

数据形式:

1、有限数据流 , 批处理 , 离线计算
        2、无限数据   , 流处理 , 实时计算

1. flink优点:

高吞吐、低延迟、有状态(内部设置)、<u> event time </u>  <u> water mark </u> 消息乱序处理、exactly once、自动反压机制、dataset支持迭代

2. 使用场景:

事件驱动: 欺诈检测、异常检测、基于规则的告警、业务流程监控、web应用程序
数据分析:生成报表
ETL:flinkX

3. 算子特点

1)One-to-one streams 保持元素的分区和顺序: 
 算子代表:source、map
 
 2)Redistributiong streams 
 改变流的分区,重新分区策略取决于使用的算子:
 算子代表:
  keyby()(re-partitions by hashing the key)、
  broadcast()、
  rebalance() (which re-partitions randomly)

4.windows stream 特有

1)Count windows 
 2)Time windows
      Tumbling window:翻滚窗口,无重叠
      Sliding window:滑动窗口,有重叠
      Session window:以不活动间隙作为分割
 3)自定义windows

5. Time

1)Event time :数据产生的时间
 2)Ingestion time :flink source 拿到数据的时间
 3)Procession time : 被处理的算子是什么就是哪里的时间
    与window 结合

6. State operations 状态操作

1)什么是状态?
 State 一般指一个具体的task/operator 的状态

2)Operator state (并行线程)
 Operator state跟一个特定operator的一个并发实例绑定,整个operator只对应一个state。

3)Keyed state
 基于keyedstream上的状态。这个状态是跟特定的key绑定的,对keyedstream流上的每一个key,可能都对应一个state

4)原始状态和托管状态(自己指定存储方式)
 Keyed state和operator state,可以以两种形式存在:原始状态和托管状态(Flink框架管理的状态)

5)State backend(rocksdb + hdfs) 状态存储地方

7. Checkpoints

1)什么是checkpoint
 Checkpoint 就是在某一时刻,将所有task的状态做一个快照(snapshot),然后存储到state backend

2)轻量级容错机制

3)保证exactly-once

4)用于内部失败的恢复(自动)

5)基本原理(面试常问)
   -通过source 里面注入barrier
   -barrier作为checkpoint的标志
 无需人工干预

8. Savapoint(手工版本,不会过期,不会覆盖)

1)流处理过程中的状态历史版本

2)具有可以replay的功能

3)外部恢复(应用重启和升级)

4)两种方式触发
  - cancel with savepoint
  - 手动主动触发

5)Savepoint 可以理解为是一种特殊的checkpoint,savepoint 就是只想checkpoint的一个指针,
   需要手动触发,而且不会过期,不会被覆盖,除非手动删除。
   正常情况下的线上环境是不需要设置savepoint 的。除非对job或集群做出重大的改动的时候,需要进行测试运行。