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


Быстрый старт: Настройка приложения Durable Functions для использования планировщика задач в Azure (предварительная версия)

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

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

В этом кратком руководстве вы настроите приложение устойчивых функций для использования устойчивого планировщика задач в качестве серверной части и развертывания приложения в Azure с помощью Visual Studio Code.

Примечание.

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

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

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

Предпосылки

В этом кратком руководстве предполагается, что у вас уже есть проект Azure Functions на локальном компьютере.

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

Кроме того, вам понадобится следующее:

Добавьте пакет планировщика устойчивых задач

Примечание.

Для расширения планировщика долговременных задач требуется Microsoft.Azure.Functions.Worker.Extensions.DurableTask версии 1.2.2 или более поздней.

Установите последнюю версию пакета Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureManaged с помощью команды dotnet add package :

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureManaged --prerelease

В host.json обновите свойство extensionBundle, чтобы использовать пакет предварительного просмотра, содержащий пакет планировщика устойчивых задач.

{
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle.Preview",
    "version": "[4.29.0, 5.0.0)"
  }
}

Обновите host.json

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

{
  "extensions": {
    "durableTask": {
      "hubName": "%TASKHUB_NAME%",
      "storageProvider": {
        "type": "azureManaged",
        "connectionStringName": "DURABLE_TASK_SCHEDULER_CONNECTION_STRING"
      }
    }
  }
}

Настройте local.settings.json

Добавьте сведения о подключении для локальной разработки:

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "<DEPENDENT ON YOUR PROGRAMMING LANGUAGE>",
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "DURABLE_TASK_SCHEDULER_CONNECTION_STRING": "Endpoint=http://localhost:8080;Authentication=None",
    "TASKHUB_NAME": "default"
  }
}

Получите номер порта эмулятора устойчивого планировщика задач на следующем этапе.

Настройка эмулятора планировщика долговременных задач

  1. Загрузите образ Docker, содержащий эмулятор.

    docker pull mcr.microsoft.com/dts/dts-emulator:v0.0.5
    
  2. Запустите эмулятор.

    docker run -d -p 8080:8080 -p 8082:8082 mcr.microsoft.com/dts/dts-emulator:v0.0.5
    

    Следующие выходные данные указывают, что эмулятор успешно запущен.

    Снимок экрана: эмулятор успешно запущен в терминале.

  3. Запишите порты, экспонированные в Docker Desktop. Планировщик предоставляет несколько портов для различных целей:

    • 8080: конечная точка gRPC, которая позволяет приложению подключаться к планировщику
    • 8082: конечная точка для панели управления планировщиком долговременных задач

    Снимок экрана: порты в Docker.

Локальное тестирование.

  1. Перейдите в корневой каталог приложения и запустите Azurite.

    azurite start
    
  2. Запустите приложение.

    func start
    

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

    Снимок экрана: функции, перечисленные при локальном запуске приложения.

  3. Запустите экземпляр оркестрации, отправив HTTP-запрос POST на конечный URL-адрес с помощью выбранного вами инструмента тестирования HTTP.

  4. Скопируйте значение statusQueryGetUri URL-адреса и вставьте его в адресную строку браузера. Вам должно быть видно состояние экземпляра оркестрации:

      {
        "name": "DurableFunctionsOrchestrationCSharp1",
        "instanceId": "b50f8b723f2f44149ab9fd2e3790a0e8",
        "runtimeStatus": "Completed",
        "input": null,
        "customStatus": null,
        "output": [
          "Hello Tokyo!",
          "Hello Seattle!",
          "Hello London!"
        ],
        "createdTime": "2025-02-21T21:09:59Z",
        "lastUpdatedTime": "2025-02-21T21:10:00Z"
      }
    
  5. Чтобы просмотреть дополнительные сведения об экземпляре оркестрации, откройте панель управления планировщиком долговечных задач http://localhost:8082/.

  6. Щелкните узел задач по умолчанию, чтобы просмотреть его панель мониторинга.

Примечание.

Узнайте больше о панели мониторинга планировщика устойчивых задач.

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

Возникли проблемы при тестировании? См. руководство по устранению неполадок.

Запуск приложения в Azure

Создание необходимых ресурсов

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

  1. Перейдите в поле создания приложения-функции и выберите «Функции Premium» или «Служба приложений» в качестве варианта размещения.

    Снимок экрана: параметры размещения приложений-функций и выбор службы приложений.

  2. В панели "Создание приложения-функции (служба приложений) введите информацию во вкладке Основное.

    Снимок экрана: вкладка

    Поле Описание
    Подписка Выберите подписку Azure.
    Группа ресурсов Выберите существующую группу ресурсов или нажмите кнопку "Создать" , чтобы создать новую.
    Имя функционального приложения Создайте уникальное имя приложения-функции.
    Вы хотите развернуть код или образ контейнера? Сохраните выбранный параметр Code .
    Стек выполнения среды Выберите среду выполнения, которую вы используете для этого быстрого старта.
    Версия Выберите версию стека среды выполнения.
    Область Выберите один из поддерживаемых регионов.
    Операционная система Выберите операционную систему.
  3. Перейдите на вкладку "Устойчивые функции ".

  4. Выберите Durable Task Scheduler в качестве поставщика серверной части для ваших устойчивых функций.

  5. Создайте ресурс планировщика. Это действие автоматически создает концентратор задач.

    Снимок экрана: создание приложения-функции плана службы приложений.

    Поле Описание
    Система хранения данных Выберите планировщик устойчивых задач.
    Область Рекомендуется, чтобы регионы планировщика и приложения-функции были одинаковыми.
    Планировщик устойчивых задач Используйте предлагаемое имя планировщика или нажмите Создать новое, чтобы создать пользовательское имя.
    Планирование На данный момент доступен только Выделенный.
    Единицы емкости В настоящее время в качестве параметра можно выбрать только одну единицу емкости.
  6. Нажмите кнопку "Рецензирование" и "Создать ", чтобы просмотреть создание ресурса.

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

    • RBAC, назначенный ему (Участник Данных Для Устойчивых Задач)

    • Область охвата задания (имя планировщика или узла задач)

      Снимок экрана: выбранные поля и свойства на вкладке

  7. Нажмите кнопку "Создать после прохождения проверки".

Развертывание ресурсов может занять около 15–20 минут. После этого вы можете развернуть приложение в Azure.

Разверните ваше приложение-функцию в Azure

Это важно

При развертывании на существующее функциональное приложение его содержимое всегда перезаписывается в Azure.

  1. В командной палитре введите и выберите Функции Azure: Развернуть в функциональном приложении.

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

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

    Снимок экрана с окном

Приложения в плане "Функции Премиум"

Если приложение работает в плане "Функции Премиум", включите параметр мониторинга масштабирования среды выполнения после развертывания, чтобы обеспечить автомасштабирование приложения на основе нагрузки:

az resource update -g <resource_group> -n <function_app_name>/config/web --set properties.functionsRuntimeScaleMonitoringEnabled=1 --resource-type Microsoft.Web/sites

Тестируйте функциональное приложение

Выполните следующую команду, чтобы получить URL-адрес функции:

az functionapp function list --resource-group <RESOURCE_GROUP_NAME> --name <FUNCTION_APP_NAME>  --query '[].{Function:name, URL:invokeUrlTemplate}' --output json

Проверка состояния оркестрации

Проверьте состояние экземпляра оркестрации и сведения о действиях на панели мониторинга планировщика устойчивых задач. Для доступа к панели мониторинга требуется войти в систему.

Примечание.

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

  1. Перейдите к ресурсу планировщика устойчивых задач на портале.

  2. Щелкните название узла задач.

  3. В меню слева выберите Управление доступом (IAM).

  4. Нажмите кнопку "Добавить ", чтобы добавить назначение роли.

    Снимок экрана: добавление назначения ролей на панели управления доступом на портале.

  5. Найдите и выберите вкладчика данных для устойчивых задач. Нажмите кнопку Далее.

    Скриншот выбора назначения роли Data Contributor для Durable Task в портале.

  6. На вкладке "Участники" для назначения доступа выберите "Пользователь", "Группа" или "Субъект-служба".

  7. Для участников нажмите + Выбрать участников.

  8. В области "Выбор членов" найдите имя или сообщение электронной почты:

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

  9. Выберите сообщение электронной почты и нажмите кнопку "Выбрать ".

  10. Нажмите "Рецензирование + назначение", чтобы завершить назначение роли.

  11. После назначения роли щелкните "Обзор" в меню слева ресурса концентратора задач и перейдите по URL-адресу панели мониторинга, расположенному в верхней части раздела Essentials .

Очистка ресурсов

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

Дальнейшие действия