#### 1.4 Strom 与 Flink对比
storm和Flink都是真正意义上的实时计算框架。其对比如下:
| | storm | flink |
| -------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| 状态管理 | 无状态 | 有状态 |
| 窗口支持 | 对事件窗口支持较弱,缓存整个窗口的所有数据,窗口结束时一起计算 | 窗口支持较为完善,自带一些窗口聚合方法, 并且会自动管理窗口状态 |
| 消息投递 | At Most Once At Least Once | At Most Once At Least Once **Exactly Once** |
| 容错方式 | ACK机制:对每个消息进行全链路跟踪,失败或者超时时候进行重发 | 检查点机制:通过分布式一致性快照机制, 对数据流和算子状态进行保存。在发生错误时,使系统能够进行回滚。 |
> 注 : 对于消息投递,一般有以下三种方案:
> + At Most Once : 保证每个消息会被投递0次或者1次,在这种机制下消息很有可能会丢失;
> + At Least Once : 保证了每个消息会被默认投递多次,至少保证有一次被成功接收,信息可能有重复,但是不会丢失;
> + Exactly Once : 每个消息对于接收者而言正好被接收一次,保证即不会丢失也不会重复。
## 二、流处理
#### 2.1 静态数据处理
在流处理之前,数据通常存储在数据库或文件系统中,应用程序根据需要查询或计算数据,这就是传统的静态数据处理架构。Hadoop采用HDFS进行数据存储,采用MapReduce进行数据查询或分析,这就是典型的静态数据处理架构。