简介
Storm是一个开源的分布式实时计算框架。
特点
- 支持水平横向扩展
- 高容错性,通过ack机制每个消息都不丢失(好奇该特性如何实现)
- 处理速度快,每个节点每秒处理超过一百万个元组(tuples)
其他
- 各编程语言支持友好
- 支持本地模式
- 支持图形化界面管理
与其他计算框架比较
- MapReduce(Hadoop家族组件):批处理,适合海量离线处理场景
- Spark Streaming:并非真正意义上的流处理,而是微批处理,对数据流进行极小粒度的拆分,近似达到流处理的效果(微分原理)
- Flink:实时计算框架
storm flink 状态管理 无状态 有状态 窗口支持 对事件窗口支持较弱,缓存整个窗口的所有数据,窗口结束时一起计算 窗口支持较为完善,自带一些窗口聚合方法,
并且会自动管理窗口状态消息投递 At Most Once
At Least OnceAt Most Once
At Least Once
Exactly Once容错方式 ACK 机制:对每个消息进行全链路跟踪,失败或者超时时候进行重发 检查点机制:通过分布式一致性快照机制,
对数据流和算子状态进行保存。在发生错误时,使系统能够进行回滚。注 : 对于消息投递,一般有以下三种方案:
- At Most Once : 保证每个消息会被投递 0 次或者 1 次,在这种机制下消息很有可能会丢失;
- At Least Once : 保证了每个消息会被默认投递多次,至少保证有一次被成功接收,信息可能有重复,但是不会丢失;
- Exactly Once : 每个消息对于接收者而言正好被接收一次,保证即不会丢失也不会重复。
流处理与批处理
- 静态数据处理:即批处理,数据通常存储在数据库或文件系统中,应用程序更具需要查询或

本文介绍了Storm实时计算框架的特点及应用场景,对比了其与MapReduce、Spark Streaming和Flink的区别。详细阐述了Storm的核心概念,包括拓扑、流、Spouts、Bolts和分组策略,以及其物理架构。
最低0.47元/天 解锁文章
420





