Apache底下的分布式即时运算系统Storm睽违一年,终于释出主要版本更新Storm 2.0,这个版本在性能跟功能上,都有重大改善,其核心重新以Java实作,不只改善了性能,更方便功能的扩充,而新版本也改变了与资料串流系统Kafka整合的方式。

Apache Storm是一个开源分布式计算系统,可以处理与Hadoop类似的工作,只不过Hadoop只能以批次进行,但是Storm却能连续无限的处理资料串流,进行像是即时分析、线上机器学习或是ETL等工作。Apache Storm的执行速度非常快,其基准测试每个节点每秒可以处理超过一百万个值组(Tuple)。

开发团队重新设计Storm的核心,把原本用Clojure实作的部分拿掉,现在整个核心都是以纯Java实作,除了提高了性能之外,也让Storm内部的API更容易使用以及扩展,官方提到,过去Storm中使用Clojure实作的部分也没有不好,只是因为Clojure学习障碍比较高,阻碍了许多新进贡献者,而在改成Java后,Storm代码将更容易维护。

storm架构原理(分散式即时运算系统Apache)(1)

Storm 2.0的核心简化了执行绪模型,并且加入了高效能的信息传输子系统,以及轻量级的背压(Back Pressure)模型,以向后兼容的前提,提高信息吞吐量并降低延迟,这些改进让Storm 2.0成为一个可以打破1微秒延迟障壁的串流引擎。Storm 2.0中加入了一个新类型API,让使用者可以更简单地以函式表达串流运算,这些API建立在核心之上,核心会自动融合多重操作,并最佳化工作管线。

另外,Storm 2.0与Kafka的整合大幅度地变更,原本Storm 1.x版本的Kafka整合是使用storm-kafka模组,但是由于Kafka弃用了底层的客户端函式库,因此Storm的使用者,现在必须转而使用storm-kafka-client模组,这个模组是整合kafka-clients函式库撰写而成。官方表示,新旧模组的搬迁很简单,他们也提供了说明文件,让使用者对照新旧模组的功能。

值得注意的是,storm-kafka-client模组在Storm 1.x的时候,允许Kafka以自己的机制管理接口(Spout)与其负责的磁区,但后来经官方评估,认为这个机制并不适合Storm,因此在1.2.0弃用,并于2.0完全移除。而且storm-kafka-client模组的订阅接口也被移除,官方提到,除非使用者自定义订阅实作,否则不会有影响。

,