#azure #azure-sdk-.net #azure-batch
Вопрос:
В настоящее время я изучаю пакетную службу Azure, и меня смущает правильное использование a JobManagerTask
…
…и, возможно, как должна выглядеть общая архитектура пакетного приложения Azure. Я построил нижеприведенную архитектуру на основе примеров кода от Microsoft, найденных на Github .
Это мои текущие компоненты приложения.
Приложение 1 — Кластерная головка
- Создает задание (включая автоматический пул)
- Определяет
JobManagerTask
- Выполняется на рабочей станции
Приложение 2 — Задача управления работой
- Разбивает входные данные на куски
- Помещает куски (единицу работы) во входную очередь
- Создает задачи (
CloudTask
)
Приложение 3 — Загрузчик
- Извлекает из входной очереди
- Выполняет задачу
- Переводит в очередь вывода
Учетная запись хранения Azure
- Связана с учетной записью пакетной службы Azure
- Предоставляет очереди ввода и вывода
- Предоставляет таблицу результатов
Лазурная Долговечная Функция
- Реализует шаблон агрегатора с помощью DurableEntities, чтобы я мог преждевременно получить доступ к входящим результатам.
- Запускается сообщениями в очереди вывода
- Агрегирует результаты и записывает сущность в таблицу хранилища Azure
Вопросы
- Правильно ли это использовать
JobManagerTask
? - Зачем мне нужен/нужен дополнительный двоичный файл/пакет приложений, который инкапсулирует задачу JobManagerTask?
- Не мог бы кто-нибудь привести пример того, когда я должен предпочесть использовать a
JobManagerTask
вместо создания заданий вручную?
Заранее спасибо!
Ответ №1:
Ваш пример является примером того, как можно использовать задачу управления заданиями, хотя, как вы упомянули, если все генерируемые данные генерируются задачей управления заданиями и исправлены, тогда может иметь смысл просто объединить их в вашу головку кластера, как вы упомянули. В вашем случае это зависит только от того, хотите ли вы, чтобы разделение и загрузка ваших данных происходили как часть задания или выполнялись на рабочей станции.
Одна из областей задач управления заданиями excel заключается в том, что поступающие данные являются непрерывными. В принципе, если бы у вас была куча авторов в необработанной входной очереди, вы могли бы запустить свою задачу JobManagerTask, непрерывно считывая данные из этой очереди и разделяя данные/создавая задачи.