Apache Storm is a free and open source distributed realtime computation system.
Apache Storm makes it easy to reliably process unbounded streams of data, doing for realtime processing what Hadoop did for batch processing.
Alibaba JStorm is an enterprise fast and stable streaming process engine.
Speed
Run program up to 4x faster than Apache Storm.
It is easy to switch from record mode to mini-batch mode.

在开始了解Heron的具体架构和设计之前,我们首先定义一些流计算以及在Heron设计中用到的基本概念:
Tuple:流计算任务中处理的最小单元数据的抽象。
Stream:由无限个Tuple组成的连续序列。
Spout:从外界数据源获得数据并生成Tuple的计算任务。
Bolt:处理上游Spout或者Bolt生成的Tuple的计算任务。
Topology:一个通过Stream将Spout和Bolt相连的处理Tuple的逻辑计算任务。
Grouping:流计算中的Tuple分发策略。
在Tuple通过Stream传递到下游Bolt的过程中,Grouping策略决定了如何将一个Tuple路由给一个具体的Bolt实例。
当前流行的实时流处理系统主要包括Apache基金会旗下的Apache Storm、Apache Flink、Apache Spark Streaming和Apache Kafka Streams等项目。
虽然它们和Heron同属于实时流处理范畴,但是它们也有各自的特点。
Heron对比Storm(包括Trident)
在Twitter内部,Heron替换了Storm,是流处理的标准。
数据模型的区别
Heron兼容Storm的数据模型,或者说Heron兼容Storm的API,但是背后的实现完全不同。
Apache Flink 是德国柏林工业大学的几个博士生和研究生从学校开始做起来的项目,早期叫做 Stratosphere。
2014 年,StratoSphere 项目中的核心成员从学校出来开发了 Flink,同时将 Flink 计算的主流方向定位为流计算,并在同年将 Flink 捐赠 Apache,后来快速孵化成为 Apache 的顶级项目。
Ali Blink
阿里巴巴在 2015 年开始尝试使用 Flink。但是阿里的业务体量非常庞大,挑战也很多。
彼时的 Flink 不管是规模还是稳定性尚未经历实践,成熟度有待商榷。为了把这么大的业务体量支持好,我们不得不在 Flink 之上做了一系列的改进,所以阿里巴巴维护了一个内部版本的 Flink,它的名字叫做 Blink。
Trident是Storm的延伸。像Storm,Trident也是由Twitter开发的。开发Trident的主要原因是在Storm上提供高级抽象,以及状态流处理和低延迟分布式查询。
Trident使用spout和bolt,但是这些低级组件在执行之前由Trident自动生成。
Trident具有函数,过滤器,联接,分组和聚合。
Trident将流处理为一系列批次,称为事务。通常,这些小批量的大小将是大约数千或数百万个元组,这取决于输入流。这样,Trident不同于Storm,它执行元组一元组处理。
批处理概念非常类似于数据库事务。每个事务都分配了一个事务ID。该事务被认为是成功的,一旦其所有的处理完成。然而,处理事务的元组中的一个的失败将导致整个事务被重传。