【问题标题】:How would I implement a HTTP Spout for Apache Storm in Java?如何在 Java 中为 Apache Storm 实现 HTTP Spout?
【发布时间】:2017-04-09 17:32:27
【问题描述】:

我最近开始使用 Apache Storm,刚刚完成了我的第一个拓扑(全部使用 java)的构建。

下一步,我想将来自连接到 Raspberry Pi 的 TI SensorTag 的传感器值放入其中一个拓扑中。

我可以通过 HTTP 发送传感器数据,但我不确定如何实现一个可以接收这些请求的工作 spout。

拓扑的想法:它应该接收带有传感器值信息的 HTTP 请求,将此数据发送到拓扑中,然后使用螺栓将它们写入文件/数据库。

到目前为止,我在 Stackoverflow 上找到了一篇关于 HTTP-Spout (Storm : Spout for reading data from a port) 的帖子,但遗憾的是,我不被允许发表评论或写任何私人消息(抱歉,如果我错过了一些相关内容)。 我不确定这个 spout 是如何工作的,我想询问一个示例代码。(基本上我想知道整个事情是如何在拓扑中设置的)。

我还尝试使用 Storm (http://storm.apache.org/releases/1.0.0/Distributed-RPC.html) 的 DRPC 功能将我的 HTTP 请求放入拓扑中,但到目前为止我无法通过文档和storm-starter-examples 取得进一步进展,因为我还在学习如何正确使用storm。我对设置 drpc-server 以及如何配置对传入请求的侦听感到非常困惑。

所以我想知道,如果有人也面临这个问题并找到了解决方案或者可以给我建议,我还能尝试什么。

这样的 HTTP-Spout(一个套接字连接,据我所知?!)或 DRPC-server 可以工作吗?

ps:还有一个代码模板、其他示例或任何其他信息来源,可能有助于理解该主题!

【问题讨论】:

    标签: java http apache-storm topology


    【解决方案1】:

    Storm spout 通常是从数据源数据,因此您所说的并不常见。这就是为什么 Chris 提到使用像 Kafka 这样的排队产品作为 Storm 和 Pi 之间的缓冲区。

    也许可以在 Storm spout 中执行您所说的操作。问题是当您开始从一台机器扩展到多台机器时,因为您的 Pi 将不知道 Storm 工作人员在哪些节点上运行,因此不知道 HTTP 服务器在哪里监听。

    我建议从简单开始。这是我写的一个简单的 WordCountTopology,你可以在你的机器上本地运行它:storm-stlhug-demo

    要开始,至少在storm之外运行服务器:

    1. Pi 将 HTTP 发布到 HTTP 服务器
    2. HTTP 服务器将负载写入数据目录中的文件
    3. Storm Spout 轮询数据目录并处理文件

    【讨论】:

      【解决方案2】:

      我会改为编写一个 servlet 来使用这些 HTTP 请求,并在收到请求时将相关信息写入 Kafka。然后,您可以使用 Kafka spout(我会编写自己的 spout,但这是一个完全不同的问题)来读取该数据并将其发送到您的拓扑中。使用 Kafka 作为中间暂存位置的主要好处是能够通过重置已提交的 Kafka 偏移量来重放数据。

      【讨论】:

      • 嗨,克里斯,谢谢你的回答!我会仔细看看卡夫卡。我只想再问一个问题。您提到过,您将使用 servlet 进行请求处理……但是如何将此 servlet 连接到 Kafka/如何将数据写入 Kafka?只是在 servlet 上使用一种方法作为某种 Kafka 生产者?
      • 我会在 servlet 类上构造一个静态变量来保存生产者实例。 servlet 上的 doGet() 方法只会编组 HTTP 请求上的数据,并使用生产者将易于解析的字符串消息写入 Kafka 主题。 servlet 的 init() 方法可用于保存生产者构造逻辑,我忘记了 servlet 拆卸方法是什么,但您可以将生产者关闭逻辑放在那里。
      猜你喜欢
      • 2015-04-22
      • 2020-05-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-14
      • 2018-09-19
      • 2019-03-14
      • 1970-01-01
      • 2016-11-12
      相关资源
      最近更新 更多