можно ли использовать Azure Storage для веб-фермы - PullRequest
0 голосов
/ 10 апреля 2019

Я хочу знать, использовал ли кто-либо подписку на сетку событий (в хранилище больших двоичных объектов) в настройках веб-фермы.

Я создал подписку на сетку событий в хранилище BLOB-объектов с гибридным подключением.

Если у вас есть несколько (слушающих) приложений, можете ли вы настроить подписку на сетку событий, которая может «поразить» каждое приложение?

Ответы [ 2 ]

0 голосов
/ 11 апреля 2019

Другой вариант, если вы не состоите в браке с использованием таблиц Azure, - это использование Cosmos DB с функциями Azure и SignalR. Я сделал что-то подобное для другого проекта, очень масштабируемого и практически реального времени.

Передача обновлений в реальном времени из БД Cosmos с помощью сервиса SignalR и функций Azure

0 голосов
/ 11 апреля 2019

Сетка событий Azure - это модель Pub / Sub для передачи (распределения) событий подписчикам на основе их подписки, такой как метаданные логического подключения. Другими словами, в этой модели Pub / Sub нет слушателя.

В вашем сценарии событие из управляемого событиями хранилища больших двоичных объектов отправляется в службу ретрансляции Azure с гибридными подключениями. Обратите внимание, что гибридные подключения используют веб-сокеты на порту 443 с SSL (https). Подробнее о протоколе гибридных подключений Azure Relay можно найти здесь .

Исходя из этого протокола, ваши получатели в тех же гибридных соединениях ретрансляции Azure будут сбалансированы , другими словами, гибридные соединения ретрансляции Azure не поддерживают порт UDP.

Решение для вашего сценария (широковещательная рассылка сообщений о событиях) заключается в использовании функции EventGridTrigger с выходной привязкой SignalR Service в качестве подписчика для хранилища управляемых событиями BLOB-объектов.

Обновление:

В следующем фрагменте экрана показана трансляция события из хранилища больших двоичных объектов на серверы веб-фермы на основе службы AEG и SignalR, интегрированной с функцией EventGridTrigger:

enter image description here

Использование расширения SignalRService для функции очень просто, см. Следующий пример:

    #r "Microsoft.Azure.WebJobs.Extensions.SignalRService"

    using Microsoft.Azure.WebJobs.Extensions.SignalRService;

    public static async Task Run(string eventGridEvent, IAsyncCollector<SignalRMessage> signalRMessages, ILogger log)
    {
        log.LogInformation(eventGridEvent);

        await signalRMessages.AddAsync(
            new SignalRMessage
            {
                Target = "Broadcasting",
                Arguments = new[] {eventGridEvent }
            });  
    }

и function.json:

    {
        "bindings": [
         {
          "type": "eventGridTrigger",
          "name": "eventGridEvent",
          "direction": "in"
         },
         {
            "type": "signalR",
            "name": "signalRMessages",
            "hubName": "mySignalRHubName",
            "connectionStringSetting": "AzureSignalRConnectionString",
            "direction": "out"
         }
         ],
        "disabled": false
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...