Сервисный автобус Hangfire VS Azure - PullRequest
0 голосов
/ 12 июня 2019

Я работаю в монолитной системе с программированием на .NET, и сейчас я пытаюсь изменить архитектуру, разделив вход в новую службу, а также уведомления для Интернета и мобильных устройств. Теперь я хочу принять правильное решение по выбору лучшего сервиса для очередей сообщений и, наконец, сравниваю Hangfire и сервисную шину для очередей и push-уведомлений.

После поиска я обнаружил, что Hangfire - это бесплатная служба, которая интегрирована с ASP.NET, а служба Bus - это служба Azure от Microsoft, которая имеет хорошую цену для нас. Таким образом, вопрос в том, что является лучшим методом для моего решения? Или если я хочу получить рекомендацию об использовании службы, выполняющей задания «забей и забудь» и для push-уведомлений. Выбор принимает во внимание производительность и цены.

1 Ответ

1 голос
/ 13 июня 2019

Я перечислю все плюсы и минусы между веб-заданием Azure, планировщиком Azure и Hangfire, после чего вы сможете определить, с кем вы хотите работать.

Azure WebJobs

Разработка и развертывание

Azure WebJobs - это очень грамотный подход к выполнению заданий, поскольку они являются просто консольными приложениями. Опыт разработчиков - это то, что многим разработчикам удобно, и вы, несомненно, можете завершить. Другое преимущество заключается в том, что эти задания можно запускать локально, выполняя exe.

Процесс развертывания соответствует стратегии git, которую мы приняли как команда. Если в решении присутствует задание, оно автоматически добавляется в службу приложений. У нас также есть два варианта работы: Непрерывный и Запланированный (Cron).

Производство

Опыт работы с Azure WebJob приятен. Вывод консоли отображается в инструменте, найденном на портале Azure, и может дать представление о происходящем.

Проблемы, которые мы обнаруживаем с веб-заданиями Azure, следующие:

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

Планировщик Azure

Azure Scheduler - это планировщик задач для облака. Может выполнять действия, подходящие для Windows Azure:

  • Вызовите конечную точку в определенное время.
  • Нажмите сообщение в служебной шине Azure.
  • Создание записи в хранилище Azure.
  • Запустить веб-задание Azure.

Разработка и развертывание

Процесс разработки аналогичен веб-заданиям Azure, когда вы записываете свою задачу в консольное приложение или пишете конечную точку HTTP для выполнения действия.

Что касается настройки запланированного задания, у вас есть два варианта:

Сделайте это вручную.

Автоматизируйте его самостоятельно с помощью диспетчера ресурсов Azure (тьфу). Технически вы не можете тестировать Планировщик Azure локально, но вы можете имитировать его поведение. Я думаю, это нормально, верно?

Производство

После установки мы обнаружили, что планировщик Azure работает надежно и так, как рекламируется. Это решило проблему балансировки нагрузки, возникшую у нас с веб-заданиями Azure, когда мы запускали выполнение через TLD перед балансировщиком нагрузки, и это просто сработало.

Примечание: Безопасность не доступна на бесплатном уровне Планировщика Azure. Стандартный уровень будет стоить вам 15 долларов США в месяц.

замедленное воспламенение

Hangfire - это интегрированный планировщик заданий, предназначенный для работы в нескольких средах хостинга: ASP.NET и консольных приложениях. Он поддерживает .NET 4.5+ и .NET Core.

Разработка и развертывание

Hangfire работает так же локально, как и на производстве. Это часть приложения, и выполнение работ происходит таким же образом. Он поддерживает несколько резервных хранилищ, таких как SQL Azure, Redis и т. Д.

Поскольку оно является частью приложения, оно может быть развернуто с использованием нашего подхода без каких-либо изменений. Это просто работает!

Hangfire также поддерживает многие другие типы заданий, которые в настоящее время недоступны для нас с помощью веб-заданий Azure: запуск и выполнение заданий, задания продолжения и логические повторные попытки.

Производство

Мы провели предварительные тесты и обнаружили, что проблем, связанных с веб-заданиями Azure и планировщиком, просто не существует. Поскольку мы используем SQL Azure в качестве резервного хранилища, не имеет значения, какие регионы мы используем для балансировки нагрузки. Также очень легко узнать, что происходит, так как встроенная панель управления очень информативна.

С точки зрения цен, Hangfire будет дешевле.

Надеюсь, это поможет вам принять решение.

...