谁能给一些建议,如何实现主机控制一些从机通过c++ ?
我正在尝试实现一个简单的程序,可以将任务从主分发到从。实现一台主机+一台从机很容易。但是,当有多个从机时,我不知道如何设计。
您应该使用一个框架,而不是自己创建一个框架。您需要搜索的是Cluster Computing。Boost可能很容易实现。MPI
使用n台机器时,您需要跟踪哪些机器是空闲的,如果没有,则在slave上加载(即每个机器上排队的任务数量),然后在最低负载的机器上排队(或您的算法认为最好的机器),例如更好的硬件意味着某些slave比其他slave执行得更好等等。我会从一个简单的分配算法开始,然后在它工作后进行调整…
在特殊情况下会出现更有趣的问题(例如奴隶死亡,以及各种类似的问题)
我会使用现有的消息传递总线使您的工作更轻松(而不是重新发明),真正的智能在于分发算法和失败节点的管理。
我们需要知道更多,但基本上你只需要确保slave不会相互阻塞。在c++中这样做的细节将涉及到,但首先要做的是问自己算法是什么。最简单的情况是如果你不关心等待奴隶,在这种情况下你有
while still tasks to do
launch a task on a slave
如果你只需要在一个从服务器上运行一个作业,那么你就需要一个标志数组,每个从服务器一个标志
slaves : array 0 to (number of slaves - 1)
initialize slaves to all FALSE
while not done
find the first FALSE slave -- it's not in use
set that slave to TRUE
launch a job on that slave
check for slaves that are done
set that slave to FALSE
现在,如果你有多个线程,你可以把它变成两个线程
while not done
find the first FALSE slave -- it's not in use
set that slave to TRUE
launch a job on that slave
while not done
check for slaves that are done
set that slave to FALSE