Мой вопрос очень прост, но ответ может и не быть.
У меня есть тысячи рабочих, выполняющих одну и ту же задачу, и я хотел бы, чтобы они выполнялись параллельно на многих удаленных виртуальных машинах (облачных или сетевых)
Вот идея:
class ThreadManager
{
public void main()
{
for (int i = 0; i<300; i++)
{
myWorker wk;
if (i < 100)
wk = new myWorker(IP_Computer_1);
else if (i < 200)
wk = new myWorker(IP_Computer_2);
else
wk = new myWorker(IP_Computer_3);
wk.RunWorkerAsync();
}
}
internal class myWorker :: BackgroundWorker
{
public string IP_Computer;
{...}//constructor
protected override void OnDoWork(DoWorkEventArgs e)
{
WriteToDatabaseTable("BAZINGA ! Greetings from computer " + Dns.GetHostName());
//SQL server DB is hosted on a publicly accessible domain
base.OnDoWork(e);
}
}
}
Конечно, это псевдокод, у вас есть идея: Назначение потоков / рабочих для разных компьютеров / ВМ по сети (не только многоядерных)
Какие основные / самые простые варианты у меня есть?
Я открыт для ЛЮБОГО легкого и эффективного решения (я не хочу вдаваться в сложное планирование / реинжиниринг рабочих процессов приложений и т. Д. ... давайте оставим это как можно проще)
NB: Это НЕ невинный вопрос. Я в курсе всего, что связано с грид / облачными вычислениями, HPC, веб-сервисами Amazon, Azure и т. Д. Я потратил много времени, читая и пробуя что-то, и мое мнение таково, что есть много (денег) бизнеса выходя там. Иногда полезно вернуться к основам и задать простые вопросы, чтобы увидеть, действительно ли нам нужно слишком сложное / сложное / инвазивное / дорогое решение для решения основных проблем (мы не Fortune 500 с гигантской сетью, а просто небольшая исследовательская компания с конкретными / атомными вычислительными потребностями)