用于部署单节点的 Storm 替代方案

Storm alternative for deploying single node

我正在创建一个应用程序并希望它可以使用 Storm 进行扩展。问题是,大多数用户实际上 运行 它在单个节点中。

我认为那些用户必须在单个节点中安装 Storm 才能使用该应用程序是不公平的。如果用户需要在多台机器上 运行 它而不必重写应用程序的一部分,有没有办法让应用程序只需要 Storm?也许是图书馆?

我知道我总是可以在 Storm 环境中编写特定于 运行 的部分代码并让用户决定,但我正在寻找一种更优雅的方法。如果不存在解决方案,我正在考虑编写一个 "proxy library" 来决定以 Storm 方式或在单个节点中使用螺栓的天气。

我正在使用 Python,但如果解决方案需要,我可以使用其他语言。

嗯...你的问题有点遗传,很难回答。我个人会选择 Storm,因为:

  1. 它使代码更简单。
  2. 安装 Storm 并不难。
  3. 对于非并行执行,您可以使用 Storm LocalCluster,它在单个 JVM 上执行 Storm 程序,因此不需要设置集群。但是,请注意 LocalCluster 是为测试代码而设计的,而不是用于生产(如果我没记错的话——也许您应该仔细检查其他来源以进行验证)。不确定它长期运行的稳定性如何(当然,没有容错——但是,如果您实现自己的本地应用程序或 "proxy library",您可能也没有容错)。

写一个 "proxy library" 是个不错的主意。但是不要低估这种方法的复杂性!以完全兼容的方式构建它会变得相当困难..