【问题标题】:How to implement distributed processing [closed]如何实现分布式处理[关闭]
【发布时间】:2014-01-17 06:43:28
【问题描述】:

我收到了需要以线性方式处理的不同样本(s1、s2、..)的请求(即,当时只有一个说 s1-request 可以处理)。我有 N 个可以处理给定请求的工作人员服务。如何实现 rpc-queue 模式,以便一次消耗一个样本,并且仍然允许在不同样本之间分配计算?

我想用 rabbit-mq 来实现它,因为它很简单,具有集群功能,但我也愿意考虑其他解决方案。

这是一张图片来说明问题(有两个工人)

                               worker 1 
                            +-----------+
                            |           |
 input queue          +---->|           |-------+
+--------------+      |     |           |       |
|              |      |     +-----------+       |
| s1,s2,s1,s1  |------+                         |
|              |      |        worker 2         |
+--------------+      |     +-----------+       |
                      |     |           |       |
 output queue         +---->|           |-------+
+--------------+            |           |       |
|              |            +-----------+       |
|(s1,s2,s1,s1) |<-+                             |
|              |  +-----------------------------+
+--------------+

【问题讨论】:

  • 只需添加一个额外的间接层,即可解决大多数问题:) 在输入队列和仅存储必须串行处理的对象类型的工作人员之间插入额外的队列。
  • @HansPassant 你能扩展一下这个想法吗?所以我会为每个样本声明一个新队列?我可以在这里使用一些 rabbit-mq 功能还是应该实现一个服务来读取输入队列来路由请求?
  • 是的,不,是的 :) 创建不同的消息队列会变得非常简单。

标签: c# rabbitmq message-queue zeromq distributed-computing


【解决方案1】:

一个简单的任务队列处理,假设任务保持不干预:

ZeroMQ 对此和更复杂的设置进行了巧妙的讨论 >>>

Check a formal behaviour model setup for Divide & Conquer

图:由 ZeroMQ/imatix 提供

http://zguide.zeromq.org/page:all#Divide-and-Conquer

(仅供参考,请查看an extended approach with SIG_KILL add-on

)


n.b.:我没有(而是 Ø)ZeroMQ 隶属关系,与 imatix 相同。 然而,经过很多项目,由于这个神话般的 ZeroMQ 抽象和架构,这些项目也很聪明,恕我直言,我敢打赌,我可以说,这是一个马力,可能只能从高-性能、可扩展、低延迟、分布式系统。

【讨论】:

    【解决方案2】:

    嘿,你检查过https://storm.incubator.apache.org 我相信它是用 python 编写的。

    Iron.io 可以托管您的队列和分布式工作模式,以便在我们的平台上以任何语言执行。 IronWorker 还得到任务队列的支持,让您的生活变得非常轻松。

    Hotel Tonight 使用术语 ETL 提取、翻译、加载来通过管道传递和转换数据。

    http://engineering.hoteltonight.com/ruby-etl-with-ironworker-and-redshift

    (我在 Iron.io 工作只是想把一些资源放在那里)

    【讨论】:

      猜你喜欢
      • 2015-07-15
      • 2019-03-11
      • 1970-01-01
      • 2016-10-12
      • 1970-01-01
      • 2015-09-24
      • 2014-09-05
      • 2011-07-23
      • 1970-01-01
      相关资源
      最近更新 更多