Менеджер очереди заданий с интерфейсом RPC - программирование
Подтвердить что ты не робот

Менеджер очереди заданий с интерфейсом RPC

Мне нужен диспетчер очереди заданий, который я могу контролировать через Интернет. Он должен иметь возможность запускать и останавливать процессы, проверять их статус (в идеале замечать и выполнять некоторый код при выходе процесса), отвечать на команды и также получать отчет на сервере.

Справочная информация. У меня есть приложение GWT, которое позволяет создавать задания для выполнения на экземпляре облака (в настоящее время EC2). Я хочу нажать "пакет заданий" (данные для процесса для работы и т.д.) На S3, запустить экземпляр Linux EC2 (или использовать тот, который уже запущен), и сообщить менеджеру заданий о экземпляре выполнить эту работу (возможно параллельно с другими заданиями). Затем он должен вытащить "пакет заданий" из S3, запустить процесс, который работает с этими данными, и отчитываться на сервере, на котором выполняется серверная часть моего приложения GWT, с некоторой информацией (например, кодом выхода, stdout, stderr). Если мне нужно написать, например. stdour/err в файл из процесса и прочитать этот файл, это тоже ОК.

Мне бы очень хотелось, чтобы менеджер был "близок" к процессам, которые он запускал, то есть я хочу избежать использования чего-то вроде Runtime.exec из JDK. Похоже, мне пришлось бы это сделать, если бы я использовал Кварц, например.

Мне хорошо, что вызовы в обоих направлениях являются асинхронными. Я хорошо разбираюсь в любых разумных технологиях для вызовов, пока я могу легко создать интерфейс для этого на моей стороне сервера GWT (например, HTTP-запросы на сервлет через SSL будут приятными и тривиальными).

Менеджеру заданий не нужно иметь очень сложную систему очередей. Выполнение нескольких процессов либо последовательно, либо параллельно должно быть прекрасным. Определить, сколько времени вычислений получило бы процесс, полученный в течение его жизни, было бы неплохо (AFAIK, это может быть сложно).

Я еще не нашел какое-либо существующее программное обеспечение, которое делает это, включая http://java-source.net/open-source/job-schedulers. Я подозреваю, что мне, возможно, придется создавать RPC-интерфейс (с проверкой подлинности и т.д., Конечно) вокруг менеджера заданий; возможно, используйте что-то вроде Apache Commons Exec. В этом случае я бы предпочел Java или Python для части менеджера заданий.

Я был бы рад услышать предложения по первому или последнему сценарию!

4b9b3361

Ответ 1

Ваши вопросы не очень понятны.

  • Если вам просто нужна рабочая очередь, есть миллион из них (SQS, AMPQ, Redis и т.д.)
  • Если вы хотите создать общую структуру для выполнения заданий и результатов регистрации, просмотрите Rundeck
  • Если вы хотите использовать специальный контроль заданий, просто используйте tmux и script через скрипты SSH и/или CGI.

Но на самом деле, я не уверен, что есть "общий" компонент, который точно сделает то, что вы хотите. Просто запустите свой любимый фреймворк и прочитайте на syscalls с вашего любимого языка. Вы можете выполнить любую операцию (запустить процесс, процесс сигнала для паузы/уничтожения) с любого языка, если вы изучите философию UNIX. Возможно, хранят базу данных рабочих заданий и т.д.