Выбор между.Очереди шины NET Service и служба очередей Azure [закрыто]

StackOverflow https://stackoverflow.com/questions/1906244

Вопрос

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

Однако я только что прочитал, что новая служебная шина .NET теперь также предлагает очереди.Они выглядят более мощными, поскольку, по-видимому, предлагают гораздо более подробный API.Хотя .NSB выглядит более интересным, у него есть пара проблем, которые заставляют меня опасаться его использования в распределенном приложении.(например, Истечение срока действия очереди...если я не могу гарантировать, что очередь будет обновлена вовремя, я могу потерять все это!).

Имел ли кто-нибудь какой-либо опыт использования любой из этих двух технологий и мог бы дать какие-либо советы о том, когда предпочесть одну из них другой?

Я подозреваю, что, хотя служебная шина выглядит более мощной, поскольку мой вариант использования на самом деле просто позволяет веб-ролям / рабочим ролям взаимодействовать друг с другом, служба очередей Azure - это то, что мне нужно.Но я просто действительно ищу подтверждение этому, прежде чем загонять себя в угол :-)

Заранее благодарю.

Обновить

За время перерыва я ознакомился с этими двумя системами.Это defo выглядит следующим образом.NET service bus более конкретно разработана для интеграции систем, а не для предоставления надежной системы обмена сообщениями общего назначения.Очереди Azure распределены и настолько надежны и масштабируемы, что очереди .NSB ими не являются, и поэтому больше подходят для кода, размещенного в самой Azure.

Спасибо за ответы.

Это было полезно?

Решение

Я бы порекомендовал вам использовать очереди Azure для обмена данными между веб- и рабочими ролями.Использование очередей является официальным и санкционированным способом взаимодействия между процессами Azure, и я искренне сомневаюсь, что вы загоните себя в угол.Служебная шина (AppFabric) имеет более высокие накладные расходы и, хотя действительно хороша для взаимодействия с внешними приложениями, может оказаться неоптимальной для быстрых и простых сообщений в вашем приложении Azure.

Другие советы

Очереди хранения данных против Сервисной шины

Вот краткое изложение некоторых различных соображений, которые у меня были при обдумывании этого вопроса.

Доступность

После сбоя хранилища в ноябре прошлого года Azure пообещала, что больше никогда не будет развертывать код во всех регионах одновременно - встроила его в систему, чтобы сделать это невозможным. https://azure.microsoft.com/en-us/blog/final-root-cause-analysis-and-improvement-areas-nov-18-azure-storage-service-interruption/

Вот что говорит msdn о доступности:

Если вы уже используете большие двоичные объекты хранилища Azure или таблицы и начинаете использовать очереди, вам гарантируется доступность на 99,9%.Если вы используете большие двоичные объекты или таблицы с очередями служебной шины, у вас будет более низкая доступность.

Очереди Azure предназначены для поддержки разделения компонентов приложения для повышения масштабируемости и устойчивости к сбоям.

Развитие

Лично я доволен API-интерфейсами storage и уже нуждаюсь в его blob-хранилище в других областях большинства приложений.Очереди хранилища используют тот же SDK, что и большие двоичные объекты хранилища.Очереди Azure предоставляют единую и согласованную модель программирования для очередей, таблиц и больших двоичных объектов

Стоимость

Режим приема и удаления, поддерживаемый сервисной шиной, обеспечивает возможность сокращения количества операций обмена сообщениями (и связанных с этим затрат) в обмен на снижение гарантии доставки.

Похоже, что есть некоторые инструменты для контроля затрат на служебную шину, которые вы могли бы использовать, если бы вам пришлось начать вести бюджет для запуска вашего приложения - я попытался снизить потенциальные затраты на очередь хранения ниже :).Это обходится менее чем в сотню долларов в месяц при более чем 40 000 очередях за GRS в час.Учитывая остальные наши расходы на хранение, я не вижу смысла сосредотачиваться на сокращении затрат здесь.(Пропускная способность одинакова для обоих и сводится на нет при сравнении)

Цены на хранение

Вы получаете неограниченное количество бесплатных очередей и операций - вы платите за место

  • предположим, что средний размер сообщения составляет 30 КБ
  • предположим, что 1000 КБ в МБ, а не 1024
  • предположим, что вы не достигнете градуированной цены выше 1 ТБ

30 Тыс. / 1 сообщение * 1 ТБ / 1000000000 тыс. * 0,095 долл. / 1 ГБ * 1000 ГБ / 1 ТБ = 0,00000285 долл. / сообщение за первый используемый ТБ

1 сообщение / ~ 30 КБ * 1000000000 КБ / 1 ТБ = 33333333 сообщений в ТБ

33333333 сообщений * $ 0.00000285 / сообщение = ~ 95 долларов за первый ТБ

в течение месяца мы можем обрабатывать около 40 000 сообщений в час с помощью этого 1-го ТБ

Цены на служебные автобусы

  • базовая цена 10 долларов в месяц
  • оплата за операцию (любой вызов api является операцией) - добавление очереди / получение очереди / мониторинг очереди / и т.д.
  • вы получаете 12,5 миллионов бесплатных операций в месяц
  • оплата за миллион операций после этого

Здесь трудно оценить использование, но 100 миллионов операций стоят 80 долларов в месяц

Получение партии

Хранилище может пакетировать максимум до 32 сообщений, указывая количество сообщений при получении сообщений, в то время как служебная шина позволяет клиенту очереди пакетировать несколько сообщений в одну операцию отправки.

Таким образом, хранилище - это пакетный прием, в то время как служебная шина - это пакетная отправка.

Мониторинг

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

Пересылка

Служебная шина имеет функцию автоматической переадресации, которая отсутствует в очередях хранения.

автоматическая переадресация позволяет тысячам очередей автоматически переадресовывать свои сообщения в единую очередь, из которой принимающее приложение получает сообщение.Вы можете использовать этот механизм для обеспечения безопасности, управления потоком и изоляции хранилища между каждым издателем сообщений.

Дубликаты

Функция обнаружения дублирования, поддерживаемая очередями служебной шины, автоматически удаляет дублирующиеся сообщения, отправленные в очередь или тему, на основе значения свойства MessageId.

Сообщения очереди хранения могут дублироваться без предупреждения.

Метаданные

Служебная шина предоставляет вам 2 части заголовка сообщения + тело.Это очень полезная функция для глобально развернутой инфраструктуры.Позволяет вам украшать свои сообщения такими элементами, как название региона и идентификатор экземпляра.Сообщения очереди - это простые строки.С другой стороны, очереди хранилища Azure обеспечивают поддержку произвольных атрибутов, которые могут быть применены к описанию очереди в виде пар имя / значение.Таким образом, вы можете украсить сообщение в служебной шине и очередь очередями хранения

Гарантия доставки

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

Производительность

Очереди хранилища Azure обеспечивают задержку в 10 мс (внутри центра обработки данных), в то время как задержка служебной шины составляет 20-25 мс.Служебная шина действительно предлагает длительный опрос, который был бы даже лучше, чем 10 мс, если бы у вас была в этом необходимость.

Безопасность

Очереди хранилища используют первичный / вторичный общий ключ, в то время как служебная шина обеспечивает RBAC через Active Directory с ролями Отправителя / Получателя / Администратора.

ссылки

Насколько я понимаю, в Служебной шине (как и было) уже некоторое время стоят очереди, но они не гарантируют доставку сообщения - приятного просмотра!

Очереди Azure должны соответствовать друг другу, потому что ваш вариант использования остается базовым благодаря простому интерфейсу Get / Put / Peek на основе REST.

Документация была недавно обновлена (21.05.2015), и в ней подробно описывается, когда используется тот или иной вариант, а также общие функции (поддержка транзакций, размер очереди и сообщения, время ожидания ...) :

https://azure.microsoft.com/en-us/documentation/articles/service-bus-azure-and-service-bus-queues-compared-contrasted/

Шаблоны, связанные с очередью, которые изучает разработчик, могут быть применены к обоим.И то, и другое может быть использовано с точки зрения надежности и простоты внедрения.

Что может делать только очередь хранения 1) Рабочий процесс, обрабатывающий сообщение, завершается сбоем.Последующий работник хочет прочитайте статус сообщения продолжить с того места, на котором остановился предыдущий работник.2) Вам требуются журналы на стороне сервера всех транзакций, выполненных с вашими очередями.

Но сравнения не имеют значения.Если разработка пользовательской очереди это то, что нам нужно, тогда всегда используйте очередь хранения.Он был первым, разработанным Microsoft.Была введена служебная шина, копирующая BizTalk, и ее целью является интеграция (гибридная), следовательно, в этой линейке есть расширенные функции:сеансы, транзакции, автоматические просроченные письма и т.д.

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

Чтобы было предельно ясно, это сравнение двух компонентов Azure, созданных в разный момент времени по разным причинам.

Очереди хранилища и сервисной шины - сравнение и противопоставление

Azure поддерживает два типа механизмов очереди:Очереди хранилища и служебной шины очереди.

Очереди хранения, которые являются частью инфраструктуры хранения Azure, имеют простой интерфейс GET / PUT / PEEK на основе REST, обеспечивающий надежный и постоянный обмен сообщениями внутри служб и между ними.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top