产品 | 模型 | API | 保证次数 | 容错机制 | 状态管理 | 延时 | 吞吐量 | 成熟度 |
---|---|---|---|---|---|---|---|---|
Strom | Native | 组合式 | At-least-once | Record ACKs | 无 | Very Low | Low | High |
Trident | mirco-batching | 组合式 | Exectly-once | Record ACKs | 基于操作的状态管理 | Low | Low | High |
Spark streaming | mirco-batching | 声明式 | Exectly-once | RDD Checkpoint | 基于DDStream的状态管理 | Low | Low | High |
Flink | Native | 组合式 | Exectly-once | Checkpoint | 基于操作的状态管理 | Low | High | Low |
1. 模型 Streaming Model
- Naitve:数据进入立即处理;
- Micro-Batch:数据流入后,先划分成Micro-Batch,再处理;
2. API 形式
- 组合式:操作更加基础的API操作,一步步精细控制,各组建组合定义成拓扑;
- 声明式:提供封装后的高阶函数。封装后可提供初步的优化;可提供窗口管理、状态管理等高级操作;
3. 保证机制
- At-least-once,至少一次,出错情况下需要执行多次;
- Exectly-once,一次执行,保证OK;
4. 容错机制
- Record ACKs,每Tuple处理后经过ACK确认;
- RDD Checkpoint,基于RDD做Checkpoint。只需要重新计算特定RDD;
- Checkpoint:Flink的checkpoint,是一种快照(待补充详细介绍)
5. 状态管理
- 基于操作的状态管理:每次操作有一个状态;
- 基于数据的状态管理:每个数据有相应的处理状态;
6. 延时&吞吐量
怎么样制定测试方案?
7. 成熟度
产品成熟度,基于Flink已经在2016.3分布1.0版本,怎么界定成熟度?
8. 后记
Twitter后期开发的Heron,能否加入比对阵营。
有个不错的翻译文档:http://developer.51cto.com/art/201603/507444.htm