сценарии Функции Azure

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

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

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

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

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

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

Diagram of a file upload process using Azure Functions.

В следующих руководствах для обработки файлов в контейнере 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, для обработки данных практически в режиме реального времени.

Diagram of a real-time stream process using Azure Functions.

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

[FunctionName("ProcessorFunction")]
public static async Task Run(
    [EventHubTrigger(
        "%Input_EH_Name%",
        Connection = "InputEventHubConnectionString",
        ConsumerGroup = "%Input_EH_ConsumerGroup%")] EventData[] inputMessages,
    [EventHub(
        "%Output_EH_Name%",
        Connection = "OutputEventHubConnectionString")] 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 можно использовать для вывода моделей.

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

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

Diagram of a machine learning and AI process using Azure Functions.

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

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

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

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

Diagram of a scheduled task where a function cleans a database every 15 minutes deduplicating entries based on business logic.

[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.

Diagram of processing an HTTP request using Azure Functions.

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

[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. Можно также создавать длительные оркестрации с помощью расширения Устойчивые функции. Дополнительные сведения см. в Устойчивые функции обзоре.

A combination diagram of a series of specific serverless workflows using Azure Functions.

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

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

Diagram of a function being used to respond to database changes.

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

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

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

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

Diagram of Azure Functions in a reliable message system.

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

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

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