【问题标题】:Implementing multiple storm topologies实施多个风暴拓扑
【发布时间】:2015-09-21 14:48:10
【问题描述】:

我正在研究一个风暴拓扑,我需要为不同的客户端位置构建多个拓扑。

我有一个 Kafka 服务器,它产生的数据需要到达远程客户端机器(在螺栓中进行了一些转换之后)。这些客户大约有1000个。 当 Kafka 产生新数据时,客户端需要在几分钟内获取该数据。 需要进行一些转换(可以通过螺栓处理),数据通过 websocket 发送到远程客户端。

例如:Kafka 服务器 -> Kafka spout -> Bolt1 -> bolt2 -> bolt3 -> websocket(在客户端机器上) 我有 1000 台客户端机器。

我希望可以为每个客户端动态创建此拓扑。当客户端准备好后,他们可以启动这个拓扑并开始读取数据吗? 或者这些拓扑(其中 1000 个)是否可以在风暴中创建并准备好发送数据?

Storm 可以实现这种架构吗? 这效率如何? Storm 设置是否易于管理?

感谢您的回复。

【问题讨论】:

  • 每个客户都有自己的kafka主题,还是所有客户的kafka主题都一样?
  • 您对每个元组进行的处理是相同的还是特定于客户端的?
  • 每个主题适用于多个客户位置。我的想法是消息必须由其中一个螺栓(bolt1)打开,查看位置信息,然后连接到适当的websocket位置以发送数据。
  • @Doomy,对每个元组的处理都是一样的。每个客户的数据格式都是一样的,但实际的daya可能并不适用于每个客户。
  • 我的拓扑可能如下所示:Kafka spout(1000 个实例)->bolt1(100 个实例)->bolt2(100 个实例)->bolt3(1000 个每个连接到 1000 个套接字)-> websocket( 1000 个不同的远程服务器)

标签: apache-storm


【解决方案1】:

为每个客户端设置拓扑不是处理问题的标准方法。由于每个客户端的数据处理需求是相同的,因此更传统的方法是使用单个拓扑结构,从输入队列(通常是 Kafka)中读取数据,执行处理,然后向客户端报告。

您专门要求为每个客户端动态创建拓扑。这当然是可能的,但鉴于我对您正在尝试做的事情的理解,我认为没有必要。

【讨论】:

  • 谢谢!你能画出拓扑图吗?我想发布一张我在想什么的照片,但我没有足够的声誉来添加一张。非常抱歉。如果你能发表你的想法,那就太好了!
  • 您已经布置了拓扑的 DAG,是吗? Kafka-spout -> bolt1 -> bolt2 -> bolt3 -> websocket。我不确定你在这里要求什么。
猜你喜欢
  • 2016-08-21
  • 1970-01-01
  • 2013-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多