Решение для простых грид-вычислений в локальной сети

#asp.net #web-services #queue #distributed-computing #grid-computing

#asp.net #веб-сервисы #очередь #распределенные вычисления #грид-вычисления

Вопрос:

Я хотел бы разработать простое решение с использованием .NET для решения следующей проблемы:

У нас есть несколько компьютеров в локальной сети:

  • 10 клиентских компьютеров, которым может потребоваться выполнить программу, установленную только на двух рабочих станциях
  • Две рабочие станции, которые используются только для выполнения определенной программы
  • Сервер, который можно использовать для установки службы, доступной со всех ранее описанных компьютеров

Когда клиентскому компьютеру необходимо выполнить программу, он отправляет запрос на сервер, и сервер распределяет задание на рабочую станцию, когда оно доступно для выполнения, и сообщает клиентскому компьютеру, когда выполнение выполнено.

Я не очень привык к разработке веб-сайтов и сервисов, поэтому я не уверен, что это лучший способ, но ниже приведено возможное решение, о котором я думал:

  • Веб-служба на сервере хранит в очередях или в базе данных список задач с их статусом
  • Клиентский компьютер вызывает веб-службу для выполнения программы и получает идентификатор задачи. Затем вызывает его каждую секунду с идентификатором задачи, чтобы узнать, выполнено ли выполнение.
  • Доступные рабочие станции каждую секунду вызывают веб-службу, чтобы узнать, нужно ли что-то выполнить. Если да, сервер назначает задачу, и рабочая станция вызывает веб-службу по завершении выполнения.

Я обобщил это на рисунке ниже:

Обзор системы

Вы думаете о более простом решении?

Ответ №1:

Взгляните на signalr! Вы могли бы использовать его в качестве платформы обмена сообщениями, и вам не нужно было бы опрашивать службу из 2 разных направлений. С SignalR вы сможете отправлять заказы на выполнение в службу, и служба уведомит клиента после обработки выполнения. Рабочая станция также будет подключена к SignalR. Им не нужно будет запрашивать заказы на выполнение, поскольку веб-сервис сможет отправлять заказы на выполнение либо на все, либо на конкретную рабочую станцию.

Комментарии:

1. Спасибо, это выглядит идеально! «API SignalR Hubs позволяет выполнять удаленные вызовы процедур (RPC) с сервера на подключенных клиентов и с клиентов на сервер. В серверном коде вы определяете методы, которые могут вызываться клиентами, и вызываете методы, которые выполняются на клиенте. В клиентском коде вы определяете методы, которые можно вызывать с сервера, и вызываете методы, которые выполняются на сервере. SignalR берет на себя всю работу по соединению клиент-сервер за вас «.