Apache | Flink | Spark Streaming | Storm | |
---|---|---|---|---|
架构 | 架构介于Spark和Storm之间,主从结构与SparkStreaming相似,DataFlow Grpah与Storm相似 | 架构依赖Spark,每个Batch处理都依赖主(Driver),可以理解为时间维度上的spark DAG。 | 主从模式,且以来Zookeeper,处理过程中对主节点依赖不大。 | |
处理模式 | Native | Micro-batch | Native | |
容错 | 基于CheckPoint机制 | WAL及RDD机制 | Records ACK | |
处理模型与延迟 | 单条事件处理 亚秒级低延迟 |
窗口事件处理 秒级高延迟 |
单条事件处理 亚秒级低延迟 |
|
吞吐量 | High | High | Medium | |
数据处理保证 | excatly once | excatly once | excatly once | |
高级API | Flink栈中提供了很多具有高级API和满足不同场景的类库:机器学习、图分析、关系式数据处理 | 能够很容易的对接Spark生态栈里面的组件、同时能够对接主流的消息传输组件以及存储系统。 | 应用需要按照特定的Storm定义的规则编写。 | |
易用性 | 支持SQL streaming,Batch和Streaming采用统一变成框架 | 支持SQL straming,Batch和Streaming采用统一变成框架 | 不支持SQL streaming。 | |
成熟性 | 新兴项目,处于发展阶段 | 已经发展一段时间 | 相对较早的流系统,比较稳定 | |
部署性 | 部署相对简单,只依赖Java环境 | 部署相对简单,只依赖Java环境 | 依赖Java和Zookeeper |