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

标签 python apache-storm

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

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

我知道我总是可以编写部分特定于 Storm 环境中运行的代码并让用户决定,但我正在寻找一种更优雅的方法。如果不存在解决方案,我正在考虑编写一个“代理库”,它可以决定以 Storm 方式还是在单个节点中使用 Bolt。

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

最佳答案

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

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

编写一个“代理库”并不是一个坏主意。但不要低估这种方法的复杂性!以完全兼容的方式构建它将会变得相当困难..

关于python - 用于部署单节点的 Storm 替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33087364/

相关文章:

c# - HDInsight Storm 事件中心 Spout 仅接收 1024 条消息

java - 如何在终止 Storm 拓扑之前调用特定方法

python - 带有选项的 Sublime Text 构建系统

python - 如何在 python 中编辑列表中的特定项目

python - Pandas:如何从 groupby 值中找到单元格的索引?

hadoop - Storm UI 拓扑不起作用

java - Apache Storm - java.lang.NoClassDefFoundError : com/google/gson/Gson

streaming - 有状态和无状态流处理

python - 使用 python 替换字典中矩阵键返回错误的选项

python - SIFT 或 SURF - 提供关键点并检索描述符