Azure Batch- это windows кластер по запросу, для выполнения операций над большим числом одинаковых, независимых задач.
От WebJob этот проект отличается многим:- Во первых WebJob исполняется на тех же инстансах, что и основное приложение. Т.е. это паразитная нагрузка к ним. Batch же использует выделенные машины.Т.к. WebJob исполняется как паразитная нагрузка, он отнимает ресурсы вашего веб приложения. В Batch можно использовать совершенно другие по размерам инстансы чем для основного сайта.
- У WebJob масштаб уровня машины, на которую он был задеплоен. Т.е. перепарсить логи, которые сама же машина сгенерировала. У Batch нет задача перелопатить файлы сгенерированные самим хостом, он обрабатывает данные созданные где угодно в любом количестве.
- Batch- это кластер, а webjob одна машинка.
- Batch работает по вашему заказу, а ServiceRole постоянно. В этом отличие.
- Чтобы балансировать нагрузку между Service Role придется изобретать велосипед, в Batch вам пердоставляют Api и контракт, которые сокращает полет фантазии для велосипедостроения.
Batch - это промежуточное решение между hdinside(hadoop) и виртуальными машин. Над просто виртуалньными машинами абстракция в виде задач и пула виртуальных машин, но не на столько сложно как в hadoop. Мое личное мнение, что этот сервис надо было делать еще года 3-4 назад, в самом начале Azure, когда все было на порядок проще, а необходимость была и тогда уже.
Сами Microsoft заявляют следующий набор сценариев использования:- Financial risk modeling
- Image rendering and image processing
- Media encoding and transcoding
- Genetic sequence analysis
- Software testing
- Virtual Machine Pool - набор виртуальных машин с одинаковыми харрактеристиками. Вы не сами инсталируете каждую машину и не конфигурируете, это за вас делает Azure. На данный момент доствпны только Windows образы для виртуальных машин, но есть feature request на linux образы.
- Task Virtual Machine - виртуальная машина, входящаяя в пул выделенная для выполнения задач.
- Work Item- шаблон операции. Пример- запустить .exe файл на исполнения. По сути это логический контейнер.
- Job - экземпляр Work Item запланированный к исполнению. Создается вместе с WorkItem
- Task - куски Job, которые выполняются на виртуальной машине.
- Загрузить пакет с бинарными файалами, которые будут выполнять задачу.
- Загрузить файлы с задачами. Они загружаются в Azure Storage Account.
- Создать пулл виртуальных машин.
- Создать Work Item. Job будет создан автоматически.
- Добавить Task к Job.
- Запустить приложение исполнять Task.
- Дождаться окончания работы приложения.
- Выгрузить результирующий файл результатов.
В Nuget сразу же появились 2 пакета для работы с batch из .net первый и второй.
Обертки для уже существующих приложений, чтобы они могли запускаться в azure batch так-же доступны в nuget тут и тут.
Цены указаны за час, замер факта использования по минутам, а цены в списке представлены в зависимости от типа запрашиваемого инстанса виртуальной машины. На сам сервис на время preview действует 50% скидка. Особенность в том, что эта цена без учета стоимости ресурсов виртуальных машин, на которых это будет работать. И реально надо еще добавить цену виртуальных машин. . Суммарно стоимости batch примерно равна использованию базового HDInside. Так, что по деньгам выигрыша нет в использования batch вместо hdinside или просто набора виртуалок.Текст статьи доступе на github/






