我正在设计一个原型实时监视器,用于处理相当大量(>30G/天)的流式数字数据。我想用 Clojure 写这个,因为这种语言似乎很适合这种“观察者 + 状态机”系统,这可能最终会成为。
我为框架找到的两个主要候选者是 Lamina 和 Storm。还有 Riemann 和 Pulse,但前者似乎更像是一个完整的解决方案而不是一个框架,我宁愿不承诺最终设计;Pulse 的 repo 看起来有点无人维护?
我想知道的是;这两个项目针对什么样的数据和工作流程进行了优化?Storm 似乎更成熟,但 Lamina 似乎更可组合和“Clojureic”(我的背景是 Python,所以我倾向于高度评价它)。
我从网上阅读中发现:
Storm 似乎专注于大数据(流),核心是带有 Clojure DSL 的纯 Java。它似乎为许多现有数据源预先构建了处理程序。
Lamina 更像是一个轻量级的、可重用的组件,它执行 Clojure 对抽象进行编码的事情,这意味着它可以被重用为其他事件系统的基础。数据源需要在代码中处理。
两者都有一组有用的聚合/拆分/计算库函数开箱即用。Lamina 的 graphviz 集成是一个不错的选择。