2015-04-22 5 views
0

Я пытаюсь найти решение для повторяющейся агрегации данных из нескольких тысяч удаленных файлов данных XML и JSON, используя очереди Azure и WebJobs для извлечения данных.Azure WebJobs для агрегирования

В принципе, URL-адрес конечной точки ввода какого-либо типа будет вызываться (с URL-адресом данных как параметр) на веб-сайте/приложении Azure. Он должен запускать фоновое задание WebJobs (или он может непрерывно работать и периодически проверять очередь для новой работы), извлекать URL-адрес данных, а затем возвращать внешний URL-адрес конечной точки при завершении.

Теперь главной проблемой является объем и его производительность/масштабирование/накладные расходы. Будут около 10 000 URL-адресов, которые будут вызываться каждые 10-60 минут (большинство URL-адресов будут загружаться каждые 60 минут). Что касается этого сценария повторяющегося большого объема фоновых заданий, у меня есть несколько вопросов:

  1. Is Azure WebJobs (? Или рабочие) правильный вариант для фоновой обработки в этом объеме, и иметь возможность масштабирования соответственно?

  2. Для такого объема, который будет наиболее подходящим для уровня Azure (сравнение на http://azure.microsoft.com/en-us/pricing/details/app-service/)? Или будет работать только Cloud или VM (ы) в этом масштабе?

Любые предложения или советы приветствуются.

ответ

1
  1. Да, Azure WebJobs является идеальным решением для этого. Azure WebJobs будет масштабироваться с помощью вашего веб-приложения (ранее веб-сайтов). Таким образом, если вы увеличите количество экземпляров веб-приложений, вы также увеличите количество экземпляров веб-заданий. Есть способы предотвратить это, но это поведение по умолчанию. Вы также можете настроить автомасштабирование, чтобы автоматически масштабировать свое веб-приложение на основе указанных вами ЦП или других правил производительности.
    Также можно масштабировать свою веб-работу независимо от вашего веб-интерфейса (WFE), развернув веб-работу в веб-приложении отдельно от веб-приложения, где развернут ваш WFE. Это имеет преимущество, заключающееся в том, что вы не загружаете машинные ресурсы (ЦП, ОЗУ), которые использует ваш WFE, предоставляя вам гибкость для масштабирования ваших экземпляров веб-заданий до соответствующего уровня. Не говорите, что это то, что вы должны делать. Вам нужно будет выполнить некоторое нагрузочное тестирование, чтобы определить, правильна ли эта стратегия (или необходима) для вашей ситуации.

  2. Вы должны рассмотреть хотя бы базовый уровень для своего веб-приложения. Это позволит вам масштабировать до 3-х экземпляров, если вам нужно, а также удаляет ограничения ЦП и сети ввода-вывода, которые есть в бесплатных и общих планах.

Что касается очереди, я бы определенно рекомендую использовать WebJobs SDK и пусть JobHost (из SDK) вызвать функцию веб работу для Вас вместо опроса очереди. Это действительно гладкое решение и освобождает вас от необходимости писать код инфраструктуры для извлечения сообщений из очереди, управления видимостью сообщения, удаления сообщения и т. Д. Для рабочего примера этого и быстрого начала создания вашей веб-работы, как это , посмотрите пример кода Azure WebJobs SDK Queues шаблон выбивает для вас.

enter image description here

+0

Thanks Rick. Несколько других вопросов в отношении ваших предложений: (1) На странице цены он говорит (как вы уже сказали), что базовый уровень можно масштабировать до 3 экземпляров, так что автоматически расширяются экземпляры от Azure на основе нагрузки и трафика к веб-приложению, или мы создаем каждый экземпляр и развертываем их отдельно? – Nick

+0

(2) Я предполагаю, что цена, указанная для базового уровня, на один экземпляр (например, B1 составляет ~ 56 долларов США за экземпляр, до 3 экземпляров), поэтому, если приложение автоматически масштабируется, цена автоматически увеличится, правильно ?! – Nick

+0

(3) Как и в случае с гостем (хотя позже я буду запускать некоторый бенчмаркинг), какова, по вашему мнению, будет пропускная способность (например, рабочие потоки, задачи в минуту и ​​т. Д.) Для повторной выборки URL-адресов (I/O-ориентированный а не центрального процессора), учитывая, что один WebJob работает на одном экземпляре с 1-2 ядрами? – Nick

Смежные вопросы