Azure Service Fabric и очереди сообщений

Теперь с использованием структуры Azure Service будет ли использоваться прецедент для использования отдельного решения для очереди, такого как служебная шина Windows? Недостатки, вероятно, были бы новой единственной точкой отказа, но есть ли проблемы? Очереди могут добавлять некоторую буферизацию, но, с другой стороны, Service Fabric должен иметь возможность масштабировать действительно хорошо и предлагать возможности с сохранением состояния, поэтому не нужно буферов очереди?

Ответы

Ответ 1

Несомненно, потенциал роста заключается в том, что такие сервисы, как Azure Service Bus и Azure Storage Queues, предлагают функции, не входящие в комплект поставки в Service Fabric. Поэтому вопрос, который вы задаете себе, заключается в следующем: добавляете ли вы внешнюю зависимость службы, чтобы получить эту функциональность, или вы остаетесь автономным, создав ее самостоятельно на Service Fabric? Самодостаточное приложение на Service Fabric - это хорошо, но повторная разработка существующей функциональности плохая, поэтому вам нужно решить, какая именно ценность для вас и опираться в этом направлении.

Например, подумайте.

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

С другой стороны..

  • Такие сервисы, как Service Bus, предлагают богатый набор функций. Стоит ли тратить время на создание и обслуживание функций, которые вам нужны на Service Fabric?

Ответ 2

Хороший вопрос! Я тоже ласкаю это. В моем случае я использую кластер RabbitMQ для очередей. Я хотел избежать этого и надеялся, что службы Stateful будут использовать надежные очереди. Я раскрыл способ добавления сообщения в службу и использовать метод RunAsync для удаления сообщений по мере их поступления. Я не впечатлен производительностью, используя этот подход, по сравнению с службой без состояния, подключенной к RabbitMQ. Но прежде чем я сдадусь, я планирую разделить службу Stateful по 5 узлам и посмотреть, есть ли какие-либо улучшения в производительности, используя службы Stateful в очереди, потребляющие рабочих.