流式计算产品对比(Storm、Trident、Spark Streaming、Flink)

产品 模型 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

  1. Naitve:数据进入立即处理;
  2. Micro-Batch:数据流入后,先划分成Micro-Batch,再处理;

2. API 形式

  1. 组合式:操作更加基础的API操作,一步步精细控制,各组建组合定义成拓扑;
  2. 声明式:提供封装后的高阶函数。封装后可提供初步的优化;可提供窗口管理、状态管理等高级操作;

3. 保证机制

  1. At-least-once,至少一次,出错情况下需要执行多次;
  2. Exectly-once,一次执行,保证OK;

4. 容错机制

  1. Record ACKs,每Tuple处理后经过ACK确认;
  2. RDD Checkpoint,基于RDD做Checkpoint。只需要重新计算特定RDD;
  3. Checkpoint:Flink的checkpoint,是一种快照(待补充详细介绍)

5. 状态管理

  1. 基于操作的状态管理:每次操作有一个状态;
  2. 基于数据的状态管理:每个数据有相应的处理状态;

6. 延时&吞吐量

怎么样制定测试方案?

7. 成熟度

产品成熟度,基于Flink已经在2016.3分布1.0版本,怎么界定成熟度?

8. 后记

Twitter后期开发的Heron,能否加入比对阵营。 
有个不错的翻译文档:http://developer.51cto.com/art/201603/507444.htm

猜你喜欢

转载自blog.csdn.net/junzixing1985/article/details/79981388