【问题标题】:Multi server processing多服务器处理
【发布时间】:2017-08-06 06:54:28
【问题描述】:

我有以下目标要完成。 假设我有以下设置

1,2,3,4,5,6

然后是3个条件

the first number must be even
the second number must be odd
the sum of first 3 numbers must be 12

为了找到合适的集合,我的目标是生成随机集合并检查它们是否满足条件。

1,3,2,5,4,6 - 0 conditions
2,4,3,5,6,1 - 1 condition
2,3,4,5,6,1 - 2 conditions
4,5,3,2,6,1 - 3 conditions. All conditions met, this is our set

这是一个非常基本的示例,它将包含更多数据和更多条件。为什么我用这种方式来查找集合?因为有这么多规则将无法找到合适的集合,有时也无法找到满足所有条件的集合,因此我将进行验证,例如,允许满足 80% 以上条件的集合。

所以我想在多台服务器上处理这个,直到找到一个有效的集合。可能我会使用 Amazon s3 实例。

我正在研究 RabbitMQ 和 Celery,但据我了解,它们更像是队列设置,而不是并行处理。另外,我可能需要用 PHP 和 node.js 编写这个

我也想有一个主服务器和从服务器。从服务器将开始生成和验证集合,并将结果发送给使用 rabbit me 的主服务器。一旦找到集合,主服务器将关闭从服务器。

不确定这是否是正确的方法(专业和优化方面)

我应该使用什么软件?有什么好的方法来实现它?

谢谢!

【问题讨论】:

  • 你确定不能只根据给定的规则生成有效的集合吗?
  • +1 @Cristy 的评论。此外,您需要所有正确的集合,只需要一个,还是需要一定数量的正确集合?这将对解决方案产生很大影响
  • @Cristy 有很多变量是不可能做到的。我们尝试过,其他人也尝试过,但它变得如此复杂。
  • @AlexBuyny 我可能会尝试找到更多。我可能会得到前 5 个结果,然后我们将选择最适合我们的集合。

标签: php node.js parallel-processing rabbitmq celery


【解决方案1】:

我也想有一个主服务器和从服务器。从服务器将开始生成和验证集合,并使用 rabbit me 将结果发送给主服务器。一旦找到集合,主服务器将关闭从服务器。

我认为你的方法会奏效。 RabbitMQ 是关于消息的,消息传递是一种组织并行处理的工具。

您的任务生成器(主)将任务(RabbitMQ 消息)发送到worker queue。您的处理器(从属)订阅了队列。他们可以从队列中获取任务消息并开始生成集。生成后,它们会将结果发送回主节点。它可以根据收到的结果发出后续任务,即generate sets of higher value from nowenough, stop work(那些应该进入不同的command 从属也订阅的主题)。

【讨论】: