Compartir a través de


Programador de tareas durables de Azure Functions

Durable Task Scheduler proporciona una ejecución duradera en Azure. La ejecución duradera es un enfoque tolerante a errores para ejecutar código que controla errores e interrupciones a través de reintentos automáticos y persistencia de estado. La ejecución duradera ayuda con escenarios como:

  • Transacciones distribuidas
  • Orquestación multiagente
  • Procesamiento de datos
  • Administración de infraestructura y otros.

Puede usar el Programador de tareas duraderas con cualquiera de las SKU de Functions, la SKU Dedicada o la SKU de Consumo (versión preliminar).

Regiones soportadas

Puede ejecutar el siguiente comando para obtener una lista de regiones disponibles para Durable Task Scheduler.

az provider show --namespace Microsoft.DurableTask --query "resourceTypes[?resourceType=='schedulers'].locations | [0]" --out table

Considere la posibilidad de usar la misma región para la aplicación durable Functions y los recursos de Durable Task Scheduler para optimizar el rendimiento y ciertas funcionalidades relacionadas con la red.

Marcos de orquestación

Azure proporciona dos marcos de orquestación orientados a desarrolladores que puede usar para compilar aplicaciones con estado que se ejecutan en cualquier entorno de proceso, sin necesidad de diseñar la tolerancia a errores. Puede usar durable Task Scheduler con los marcos de orquestación siguientes:

  • Funciones duraderas
  • SDK de Tareas duraderas

Obtenga información sobre qué orquestación funciona mejor para el proyecto.

Arquitectura

Para todos los marcos de orquestación del Programador de Tareas Duraderas, puede crear instancias de programador de tipo Microsoft.DurableTask/scheduler mediante Azure Resource Manager. Cada recurso del planificador tiene sus propios recursos dedicados de proceso y memoria optimizados para:

  • Distribución de elementos de trabajo de orquestador, actividad y entidad
  • Almacenamiento y consulta de historial a escala con una latencia mínima
  • Ofrecer una experiencia de supervisión enriquecida a través del panel del Durable Task Scheduler

A diferencia de los proveedores de almacenamiento BYO, el proveedor del programador de Durable Task es un servicio de back-end diseñado para optimizar específicamente las necesidades del Durable Task Framework.

En el diagrama siguiente se muestra la arquitectura del back-end del programador de Durable Task y su interacción con las aplicaciones conectadas.

Diagrama de la arquitectura del programador de tareas durables.

Separación operativa

Durable Task Scheduler se ejecuta en Azure como un recurso independiente de la aplicación. Este aislamiento es importante por varias razones:

  • Consumo reducido de recursos
    El uso de un programador administrado como Durable Task Scheduler (en lugar de un proveedor de almacenamiento BYO) reduce el consumo de recursos de CPU y memoria causado por la sobrecarga de administrar particiones y otras interacciones complejas del almacén de estado.

  • Aislamiento de errores
    Separar el programador de la aplicación reduce el riesgo de errores en cascada y mejora la confiabilidad general en las aplicaciones conectadas.

  • Escalado independiente
    El recurso del programador se puede escalar independientemente de la aplicación para mejorar la administración de recursos de infraestructura y la optimización de costos. Por ejemplo, varias aplicaciones pueden compartir el mismo recurso de programador, lo que resulta útil para las organizaciones con varios equipos o proyectos.

  • Experiencia de soporte técnico mejorada
    Durable Task Scheduler es un servicio administrado, lo que proporciona soporte y diagnóstico simplificados para problemas relacionados con la infraestructura subyacente.

Conectividad de aplicaciones

Las aplicaciones se conectan al recurso del planificador a través de una conexión gRPC, protegida mediante TLS y autenticada a través de la identidad de la aplicación. La dirección del punto de conexión tiene un formato similar a {scheduler-name}.{region}.durabletask.io. Por ejemplo: myscheduler-123.westus2.durabletask.io.

Los elementos de trabajo se transmiten desde el programador a la aplicación usando un modelo de envío, lo que mejora la latencia total y elimina la necesidad de sondeo. Las aplicaciones pueden procesar varios elementos de trabajo en paralelo y enviar respuestas al programador cuando se complete la tarea de orquestación, actividad o entidad correspondiente.

Administración de estados

El Programador de tareas duraderas administra el estado de orquestaciones y entidades internamente, sin una cuenta de almacenamiento independiente para la administración de estado. El almacén de estado interno está altamente optimizado para su uso con Durable Functions y los SDK de Durable Task, lo que da como resultado una mejor durabilidad y confiabilidad y una latencia reducida.

El programador usa una combinación de almacenamiento interno persistente y en memoria para administrar el estado.

  • El almacén en memoria se usa para el estado de corta duración.
  • El almacén persistente se usa para la recuperación y para las operaciones de consulta de varias instancias.

Características destacadas

Al implementar uno de los marcos de orquestación de Durable Task Scheduler, se beneficia de varios aspectos clave destacados.

Panel del Programador de tareas duraderas

Cuando se crea un recurso de planificador, se proporciona un panel de control correspondiente desde el principio. El panel ofrece una vista general de todas las orquestaciones y las instancias de las entidades, y le permite:

  • Filtre rápidamente por distintos criterios.
  • Recopile datos sobre una instancia de orquestación, como el estado, la duración, la entrada y la salida, etc.
  • Explore en profundidad una instancia para obtener datos sobre las suborquestaciones y actividades.
  • Realice operaciones de administración, como pausar, finalizar o reiniciar una instancia de orquestación.

El acceso al panel está protegido por controles de acceso basados en roles y identidades.

Para obtener más información, consulte Depuración y administración de orquestaciones mediante el panel del Programador de tareas duraderas.

Varios centros de tareas

El estado se conserva de forma duradera en un centro de tareas. Un centro de tareas:

  • Es un contenedor lógico para instancias de orquestación y de entidad.
  • Proporciona una manera de particionar el almacén de estado.

Con una instancia del planificador, puede crear varios centros de tareas que puedan usar diferentes aplicaciones. Cada centro de tareas obtiene su propio panel de supervisión. Para acceder a un centro de tareas, la identidad del autor de la llamada debe tener los permisos de control de acceso basado en rol (RBAC) necesarios.

La creación de varios centros de tareas aísla diferentes cargas de trabajo que se pueden administrar de forma independiente. Por ejemplo, puede hacer lo siguiente:

  • Cree un centro de tareas para cada entorno (desarrollo, prueba, prod).
  • Cree centros de tareas para diferentes equipos de su organización.
  • Utilice la misma instancia del planificador en varias aplicaciones.

El uso compartido del programador es una excelente manera de optimizar el costo cuando varios equipos tienen escenarios que requieren orquestaciones. Aunque puede crear varios centros de tareas en una instancia del programador, comparten los mismos recursos; Si un centro de tareas está muy cargado, puede afectar al rendimiento de los otros centros de tareas.

Emulador para el desarrollo local

El emulador del Programador de tareas duraderas es una versión ligera del sistema backend del programador que opera localmente dentro de un contenedor Docker. Por ejemplo, puede:

  • Desarrolle y pruebe la aplicación Durable Function sin necesidad de implementarla en Azure.
  • Supervise y administre las orquestaciones y las entidades como lo haría en Azure.

De forma predeterminada, el emulador expone un único centro de tareas denominado default. Para exponer varios centros de tareas, inicie el emulador y especifique la DTS_TASK_HUB_NAMES variable de entorno con una lista separada por comas de nombres de centro de tareas. Por ejemplo, para habilitar dos centros de tareas denominados taskhub1 y taskhub2, puede ejecutar el siguiente comando:

docker run -d -p 8080:8080 -p 8082:8082 -e DTS_TASK_HUB_NAMES=taskhub1,taskhub2 mcr.microsoft.com/dts/dts-emulator:latest

Nota:

El emulador almacena internamente el estado de orquestación y entidad en la memoria local, por lo que no es adecuado para su uso en producción.

Para ver todas las versiones del emulador disponibles, ejecute el siguiente comando:

curl -s https://mcr.microsoft.com/v2/dts/dts-emulator/tags/list

Purgar automáticamente las directivas de retención

Los datos de orquestación obsoletos deben purgarse periódicamente para garantizar un uso eficaz del almacenamiento. La característica de depuración automática para Durable Task Scheduler proporciona una solución simplificada y configurable para administrar la limpieza automática de la instancia de orquestación. Obtenga más información sobre cómo establecer directivas de retención de purga automática para el Programador de tareas duraderas.

Limitaciones y consideraciones

  • Cuota del programador:

    Actualmente, puede crear hasta cinco planificadores por región por suscripción.

  • Tamaño máximo de carga:

    Durable Task Scheduler tiene una restricción de tamaño de carga máxima para los siguientes tipos de datos serializados por JSON:

    Tipo de dato Tamaño máximo
    Entradas y salidas de Orchestrator 1 MB
    Entradas y salidas de actividad 1 MB
    Datos de eventos externos 1 MB
    Estado personalizado de orquestación 1 MB
    Estado de la entidad 1 MB
  • Paridad de características:

    Las sesiones extendidas aún no están disponibles en el back-end del programador de Durable Task.

  • Límites del centro de tareas:

    Tiene un límite en la cantidad de centros de tareas que puede usar dependiendo de su SKU de facturación.

    Para obtener más cuota, póngase en contacto con el soporte técnico.

Pasos siguientes