2014-02-11 123 views
0

我有一个非常普遍的问题,正在寻找一个正确的方向。说如果我想建立一个可以在多台计算机上运行的程序,但希望每个程序与另一台程序一起工作,我如何才能实现它们之间的通信层?通过云进行应用程序间通信?

Ex。在芝加哥,伊利诺伊州 机A正在运行

机B在休斯顿

机C在圣迭戈运行CA

他们都服务于一个功能,但它的工作作为一个团队来让它运行做得更快。

机器A打开并准备就绪,但需要检查机器B和C是否准备就绪。 一旦所有机器都打开并相互检查,然后他们开始。有一些类型的问题,他们都选择了工作,并完成。因为他们必须知道不要做另一台电脑/线程已经在工作的工作。

我从来没有处理过与计算机间的沟通,所以我真的不知道从哪里开始。我正在考虑建立一个云数据库,他们可以在这里检查哪些机器正在做什么,但看起来非常笨重。我相信有更好的方法来做到这一点。

回答

0

你想在这里两个不同的东西。你想要一个他们都定期检查的发布/订阅或主题(http://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern)......如果有人没有每隔数分钟/秒检查一次,他们就会停止工作(假设你想停下来, d必须审核这一要求)。 您还需要一个简单的消息队列(http://en.wikipedia.org/wiki/Message_queue)来选择工作。

我仍然仔细检查你是否真的需要在开始工作之前让它们全部运行。我不会在地理上将它们分开。如果他们只是一个管道中的阶段,那就做好几个队列,当他们失去工作时他们就会入睡。这是基于消息的体系结构的优势。将潜在的高滞后过程彼此解耦。尝试并保持高度依赖的工作位于同一地点。

相关问题