Функций Azure веб-заданий Azure и против: Как выбрать
Я создал Azure Webjobs что использовать триггеры и я только что узнал о Функции Azure.
из того, что я понимаю функции Azure, похоже, перекрываются с функциями Azure Webjobs, и мне трудно понять, когда выбирать между функцией и Webjob:
В отличие от Webjobs, функции могут быть вызваны только, он не был разработан для запуска непрерывного процесса (но вы можете написать код для создания непрерывная функция.)
вы можете писать веб-задания и функции, используя множество языков (C#, node.js, python ...) но вы можете написать свою функцию с портала Azure, чтобы было проще и быстрее разработать тест и развернуть функцию.
веб-задания выполняются как фоновые процессы в контексте веб-приложения Службы приложений, приложения API или мобильного приложения, а функции выполняются с использованием классического/динамического плана службы приложений.
Что касается масштабирования, функции, похоже, дают больше возможностей, поскольку вы можете использовать динамический план службы приложений, и вы можете масштабировать одну функцию, тогда как для веб-задания вам нужно масштабировать все веб-приложение.
поэтому наверняка есть разница в ценах, если у вас есть существующее веб-приложение, вы можете использовать его для запуска веб-задания без каких-либо дополнительных затрат, но если у меня нет существующего веб-приложения, и мне нужно написать код для запуска очередь должен ли я использовать веб-задание или функцию ?
есть ли другие соображения, чтобы иметь в виду, когда вам нужно выбрать ?
4 ответов:
здесь есть несколько вариантов в Службе приложений. Я не буду касаться логических приложений или автоматизации Azure, которые также касаются этого пространства.
Azure WebJobs
в этой статье честно говоря, лучшее объяснение, но я кратко изложу здесь.
по требованию WebJobs ака. Запланированные веб-Джобс ака. Срабатывает Веб-Заданий
Triggered WebJobs-это веб-задания, которые запускаются один раз при вызове URL-адреса или при свойство расписания присутствует в расписании.задание. Запланированные веб-задания-это просто веб-задания, в которых было создано задание планировщика Azure для вызова нашего URL-адреса по расписанию, но мы также поддерживаем свойство schedule, как упоминалось ранее.
резюме:
+исполняемый файл/скрипт по требованию+плановые расстрелы-должны вызвать через .конечной точкой ВСМ-масштабирование ручное-VM всегда требуетсянепрерывные веб-задания (не SDK)
эти задания работают вечно, и мы разбудим их, когда они рухнут. Вам нужно включить Always On, чтобы они работали, что означает их запуск на базовом уровне и выше.
резюме:
+исполняемый файл/скрипт всегда работает-требуется всегда на базовом уровне и выше-VM всегда требуетсянепрерывные веб-задания с помощью WebJobs SDK
это ничего с точки зрения" WebJobs the feature". По сути, у нас есть этот сладкий SDK, который мы написали для таргетинга WebJobs, который позволяет вам выполнять код на основе простых триггеров. Я расскажу об этом позже.
резюме:
+исполняемый файл/скрипт всегда работает+богаче ведение журнала / приборной панели+Триггеры поддерживаются вместе с длительными задачами-требуется всегда на базовом уровне и выше-масштабирование выполняется вручную-начало работы может быть немного утомительным-VM всегда требуетсяAzure WebJobs SDK
SDK веб-заданий Azure-это полностью отдельный пакет SDK веб-заданий функции платформы. Он предназначен для запуска в веб-задании, но действительно может быть запущен везде. У нас есть клиенты, которые запускают их на рабочих ролях и даже на prem или других облаках, хотя поддержка-это только лучшие усилия.
SDK-это просто упрощение запуска некоторого кода в ответ на какое-либо событие и привязки к службам/и т. д. простой. Это честно лучше всего покрыты в некоторых docs, но суть его в том, что "событие" + "код" природа. Мы также сделали некоторую классную работу по расширению, но это вторично по отношению к ядру цель.
резюме:
- большинство из них упомянуты выше
+вы можете расширить и запустить все, что вы хотите. Полный контроль.-HTTP материал немного шаткий, но он работаетФункции Azure
функции Azure-это все о том, чтобы взять эту основную цель пакета SDK WebJobs, разместить его в качестве службы и упростить начало работы с другими языками. Мы также вводим "Бессерверная" концепция здесь, потому что это имело большой смысл - мы знаем, как наш SDK масштабируется, поэтому мы можем делать интеллектуальные вещи для вас.
функции Azure-это очень сильно управляемый опыт. Мы не поддерживаем привлечение вашего собственного хозяина. В настоящее время мы не поддерживаем пользовательские расширения, но это то, что мы исследуем. Мы упрямы в том, что вы можете и не можете сделать, но для вещей, которые мы включаем, они гладкие и просты в использовании и управлении.
большая часть однако "рамочные" вещи, которые мы сделали для улучшения функций, проходят через SDK WebJobs. Например, мы будем загружать новый NuGet для WebJobs, который действительно значительно увеличивает скорость ведения журнала, что имеет огромные преимущества perf для пользователей WebJobs SDK. В функциях доставки как "WebJobs SDK as a Service" мы действительно улучшили много проблем с опытом.
+поддерживается множество языков+полностью управляемый, динамичный масштабирование+простой в использовании портал w / UX для управления соединениями / etc.-хост не настраивается (пока)~работает в отдельном "приложении", которое требует некоторой настройки в вашем РЕПО, но значительно упрощает долгосрочное обслуживание.~нет инструментов (пока)некоторые инструменты теперь в Альфа или предварительный просмотр -https://www.npmjs.com/package/azurefunctions (обновление февраль 2017: Визуальная Студия Инструменты для функций Azure теперь доступны в режиме предварительного просмотра: https://blogs.msdn.microsoft.com/webdev/2016/12/01/visual-studio-tools-for-azure-functions/)я, вероятно, предвзят, так как функции-это наш последний и самый большой, но не стесняйтесь снимать больше минусов для функций по-моему.
я, вероятно, в конечном итоге опубликую блог, который разрабатывает немного больше, но я попытался сохранить это как можно более кратким для этого форума.
будучи функциями Azure, основанными на SDK WebJobs, они предоставляют большую часть функций, уже доступных в WebJobs, но с некоторыми новыми классными возможностями.
с точки зрения триггеры, в дополнение к тем, которые уже доступны для веб-заданий (например, служебная Шина, очереди хранения, большие двоичные объекты хранения, расписания ХРОНОВ, веб-крючки, EventHub и поставщики облачных хранилищ файлов), функции Azure могут запускаться как API. И HTTP-вызовы не требуют учетных данных kudu, но могут быть проверку подлинности с помощью Azure AD и сторонних поставщиков.
в отношении выходы, единственное различие заключается в том, что функции могут возвращать ответ при вызове через HTTP.
оба поддерживают широкий различные языки, в том числе: bash (.sh), batch (.летучая мышь. / cmd), C#, F#, Node.Js, PHP, PowerShell и Python.
будучи функции в настоящее время в предварительном просмотре,инструмент все еще не идеально. Но Microsoft работает над этим. Надеюсь, мы получим такую же гибкость разработки и тестирования функций локально, как и в настоящее время для WebJobs с Visual Studio.
самые значительные и крутые преимущества принесенные функциями альтернатива иметь Динамический План Обслуживания С "независимая" модель, в котором нам не нужно управлять экземплярами VM или масштабированием; все это управляется для нас. Кроме того, не имея выделенных экземпляров, мы платим только за ресурсы, которые мы на самом деле использовать.
более подробное сравнение между ними здесь: https://blog.kloud.com.au/2016/09/14/azure-functions-or-webjobs/
HTH:)
по словам docs функции Azure имеют следующее, что WebJobs не делает:
- автоматическое масштабирование (процессор и память масштабируются в соответствии с потребностями, определенными во время выполнения)
- платить за использование ценообразования (план потребления, а не план обслуживания приложения)
- больше событий триггера (например, WebHooks)
- разработка в браузере (Visual Studio все еще возможна)
- F# support
проще говоря: функции Azure это новое животное. Если у вас еще нет плана службы приложений, я бы пошел с функциями, потому что в долгосрочной перспективе я не вижу причин, по которым начинать с WebJobs было бы лучше (инструменты функций могут быть уже не такими стабильными).
Я хотел бы добавить еще два пункта выше длинный и немного старых постов. если вы выбрали план потребления в функциях azure, ниже приведены ограничения
Если вы хотите запустить какие-либо задания более 10 минут, выберите webjobs. Функции Azure, работает только для 5 минут по умолчанию, если ваш процесс превышает 5 минут, то функция azure создает исключение тайм-аута. Вы можете увеличить время 10 минут хозяин.json.
Примечание: нет никаких проблем с тайм-аутом, если вы используете функции Azure плана службы приложений.
еще одна причина, чтобы отличить это. если вы используете функцию azure, то ваше начальное время запуска будет медленным, потому что машины(контейнеры) создаются на лету и уничтожаются после его использования.
Comments