Поделиться через


сценарии для Azure Functions

Мы часто создаем системы, чтобы реагировать на ряд критических событий. Независимо от того, создаете ли веб-API, отвечаете на изменения базы данных, обрабатываете потоки событий или сообщения, Функции Azure можно использовать для их реализации.

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

Выберите язык разработки в верхней части статьи.

Обработка передаваемых файлов

Существует несколько способов использования функций для обработки файлов в или из контейнера блоб-хранилища. Для получения дополнительных сведений о параметрах активации для контейнера BLOB-объектов см. Работа с BLOB-объектами в документации по лучшим практикам.

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

Схема процесса отправки файлов с помощью Функций Azure.

В следующих руководствах используется триггер Blob (на основе Event Grid) для обработки файлов в контейнере Blob:

Например, использование триггера BLOB с подпиской на события для контейнеров BLOB:

[FunctionName("ProcessCatalogData")]
public static async Task Run([BlobTrigger("catalog-uploads/{name}", Source = BlobTriggerSource.EventGrid, Connection = "<NAMED_STORAGE_CONNECTION>")]Stream myCatalogData, string name, ILogger log)
{
    log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myCatalogData.Length} Bytes");

    using (var reader = new StreamReader(myCatalogData))
    {
        var catalogEntry = await reader.ReadLineAsync();
        while(catalogEntry !=null)
        {
            // Process the catalog entry
            // ...

            catalogEntry = await reader.ReadLineAsync();
        }
    }
}

Поток в режиме реального времени и обработка событий

Так много данных телеметрии создается и собирается из облачных приложений, устройств Интернета вещей и сетевых устройств. Функции Azure может обрабатывать эти данные почти в режиме реального времени как горячий путь, а затем хранить его в Azure Cosmos DB для использования на панели мониторинга аналитики.

Функции также могут использовать триггеры событий с низкой задержкой, такие как Сетка событий, и выходные данные в режиме реального времени, такие как SignalR, для обработки данных практически в режиме реального времени.

Схема процесса потока в режиме реального времени с помощью Функций Azure.

Например, с помощью триггера центров событий для чтения из концентратора событий и выходной привязки для записи в концентратор событий после расшифровки и преобразования событий:

[FunctionName("ProcessorFunction")]
public static async Task Run(
    [EventHubTrigger(
        "%Input_EH_Name%",
        Connection = "InputEventHubConnectionSetting",
        ConsumerGroup = "%Input_EH_ConsumerGroup%")] EventData[] inputMessages,
    [EventHub(
        "%Output_EH_Name%",
        Connection = "OutputEventHubConnectionSetting")] IAsyncCollector<SensorDataRecord> outputMessages,
    PartitionContext partitionContext,
    ILogger log)
{
    var debatcher = new Debatcher(log);
    var debatchedMessages = await debatcher.Debatch(inputMessages, partitionContext.PartitionId);

    var xformer = new Transformer(log);
    await xformer.Transform(debatchedMessages, partitionContext.PartitionId, outputMessages);
}

Машинное обучение и ИИ

Помимо обработки данных, Функции Azure можно использовать для вывода моделей. Расширение привязки Azure OpenAI позволяет легко интегрировать функции и поведение службы Azure OpenAI в выполнение кода функции.

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

Функция также может вызывать модель TensorFlow или службы ИИ Azure для обработки и классификации потока изображений.

Схема процесса машинного обучения и искусственного интеллекта с помощью Функций Azure.

Дополнительные сведения см. в статье "Использование средств и моделей ИИ" в Функциях Azure.

Выполнение запланированных задач

Функции позволяют запускать код на основе определенного расписания cron.

Узнайте, как создать функцию в портал Azure, которая выполняется по расписанию.

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

Схема запланированной задачи, в которой функция очищает базу данных каждые 15 минут дедупликации записей на основе бизнес-логики.

[FunctionName("TimerTriggerCSharp")]
public static void Run([TimerTrigger("0 */15 * * * *")]TimerInfo myTimer, ILogger log)
{
    if (myTimer.IsPastDue)
    {
        log.LogInformation("Timer is running late!");
    }
    log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");

    // Perform the database deduplication
}

Создание масштабируемого веб-API

Функция, активировающая HTTP, определяет конечную точку HTTP. Эти конечные точки выполняют код функции, который может подключаться к другим службам напрямую или с помощью расширений привязки. Конечные точки можно интегрировать в веб-API.

Вы также можете использовать конечную точку функции, активированную HTTP, как интеграцию веб-перехватчиков веб-перехватчика, например веб-перехватчики GitHub. Таким образом, вы можете создавать функции, обрабатывающие данные из событий GitHub. Дополнительные сведения см. в разделе "Мониторинг событий GitHub" с использованием веб-перехватчика и Функций Azure.

Схема обработки HTTP-запроса с помощью Функций Azure.

Примеры см. в следующих статьях:

[FunctionName("InsertName")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequest req,
    [CosmosDB(
        databaseName: "my-database",
        collectionName: "my-container",
        ConnectionStringSetting = "CosmosDbConnectionString")]IAsyncCollector<dynamic> documentsOut,
    ILogger log)
{
    string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
    dynamic data = JsonConvert.DeserializeObject(requestBody);
    string name = data?.name;

    if (name == null)
    {
        return new BadRequestObjectResult("Please pass a name in the request body json");
    }

    // Add a JSON document to the output container.
    await documentsOut.AddAsync(new
    {
        // create a random ID
        id = System.Guid.NewGuid().ToString(), 
        name = name
    });

    return new OkResult();
}

Создание бессерверного рабочего процесса

Функции часто являются компонентом вычислений в топологии бессерверных рабочих процессов, например рабочий процесс Logic Apps. Также можно создавать длительные оркестрации с помощью расширения Durable Functions. Дополнительные сведения см. в разделе обзор Устойчивых функций.

Схема сочетания ряда конкретных бессерверных рабочих процессов с помощью Функций Azure.

Реагирование на изменения базы данных

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

Схема функции, используемой для реагирования на изменения базы данных.

Рассмотрим следующие примеры.

Создание надежных систем сообщений

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

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

Схема функций Azure в надежной системе сообщений.

В этих статьях показано, как записывать выходные данные в очередь хранилища:

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

Следующие шаги