
# Flink应用开发常用概念
- **DataStream**
  数据流，是指Flink系统处理的最小数据单元。该数据单元最初由外部系统导入，可以通过socket、Kafka和文件等形式导入，在Flink系统处理后，通过Socket、Kafka和文件等输出到外部系统，这是Flink的核心概念。
  
- **Data Transformation**
  数据处理单元，会将一或多个DataStream转换成一个新的DataStream。
  具体可以细分如下几类：
  - 一对一的转换：如Map。
  
  - 一对0、1或多个的转换：如FlatMap。
  
  - 一对0或1的转换，如Filter。
  
  - 多对1转换，如Union。
  
  - 多个聚合的转换，如window、keyby。
   
- **Topology**
  一个Topology代表用户的一个执行任务。一个Topology由输入（如Kafka source）、输出（如Kafka sink）和多个Data Transformation组成。
  
- **CheckPoint**
  CheckPoint是Flink数据处理高可靠、最重要的机制。该机制可以保证应用在运行过程中出现失败时，应用的所有状态能够从某一个检查点恢复，保证数据仅被处理一次（Exactly Once）。
  
- **SavePoint**
  Savepoint是指允许用户在持久化存储中保存某个checkpoint，以便用户可以暂停自己的任务进行升级。升级完后将任务状态设置为savepoint存储的状态开始恢复运行，保证数据处理的延续性。
  
 
