Inicio rápido: Establecimiento de una aplicación de Durable Functions para usar el proveedor de almacenamiento Netherite

Use Durable Functions, una característica de Azure Functions, para escribir funciones con estado en un entorno sin servidor. Durable Functions administra el estado, los puntos de control y los reinicios en la aplicación.

Durable Functions ofrece varios proveedores de almacenamiento de, también denominados back-end , para almacenar el estado de orquestación y del entorno de ejecución de entidades. Los nuevos proyectos están configurados para usar el proveedor de Azure Storage de manera predeterminada. En este inicio rápido, configurará una aplicación de Durable Functions para usar el proveedorde almacenamiento Netherite.

Oharra

  • Microsoft Research diseñó y desarrolló Netherite para escenarios de alto rendimiento. En algunas pruebas comparativas, el rendimiento aumentó en más de un orden de magnitud en comparación con el proveedor de Azure Storage predeterminado. Para obtener más información sobre cuándo usar el proveedor de almacenamiento de Netherite, consulte la documentación de proveedores de almacenamiento.

  • Actualmente no se admite la migración de datos del centro de tareas entre proveedores de almacenamiento. Las aplicaciones de funciones que tienen datos en tiempo de ejecución existentes comienzan con un centro de tareas nuevo y vacío después de cambiar al back-end de Netherite. Del mismo modo, el contenido del centro de tareas que se crea mediante MSSQL no se puede conservar si cambia a otro proveedor de almacenamiento.

  • El back-end de Netherite no es compatible actualmente con Durable Functions cuando se ejecuta en el plan de Consumo flexible.

Requisitos previos

En los pasos siguientes se da por hecho que está empezando con una aplicación de Durable Functions existente y que conoce bien su funcionamiento.

En concreto, en este inicio rápido se da por supuesto que ya tiene:

  • Ha creado un proyecto de Azure Functions en el equipo local.
  • Se ha agregado Durable Functions al proyecto con una función de orquestador y una función de cliente que la desencadena.
  • Se ha configurado el proyecto para la depuración local.
  • Se ha aprendido a implementar un proyecto de Azure Functions en Azure.

Si no cumple estos requisitos previos, se recomienda empezar con uno de los siguientes inicios rápidos:

Adición de la extensión Netherite (solo .NET)

Oharra

Si la aplicación usa Paquetes de extensiones, omita esta sección. Extension Bundles elimina la necesidad de administración manual de extensiones.

En primer lugar, instale la versión más reciente de la Microsoft.Azure.Functions.Worker.Extensions.DurableTask.Netherite extensión del proveedor de almacenamiento desde NuGet. Para .NET, normalmente se incluye una referencia a él en el archivo .csproj y se compila el proyecto.

Puede instalar la extensión mediante el siguiente comando CLI de Azure Functions Core Tools:

Símbolo del sistema de Windows
func extensions install --package <package name depending on your worker model> --version <latest version>

Para obtener más información sobre cómo instalar extensiones de Azure Functions a través de la CLI de Core Tools, vea instalación de extensiones de func.

Configuración de local.settings.json para el desarrollo local

El back-end de Netherite requiere una cadena de conexión para Azure Event Hubszure Event Hubs para ejecutarse en Azure. Sin embargo, para el desarrollo local, proporcionar la cadena "SingleHost" evita la necesidad de utilizar los Centros de Eventos.

En local.settings.json, establezca el valor de EventHubsConnection en SingleHost:

JSON
{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "EventHubsConnection": "SingleHost",
    "FUNCTIONS_WORKER_RUNTIME": "<dependent on your programming language>"
  }
}

Oharra

El valor de FUNCTIONS_WORKER_RUNTIME depende del lenguaje de programación que use. Para obtener más información, vea la referencia de tiempo de ejecución.

Actualización de host.json

Edite la sección proveedor de almacenamiento del archivo de host.json para establecer type en Netherite:

JSON
{
  "version": "2.0",
  "extensions": {
    "durableTask": {
      "storageProvider": {
        "type": "Netherite"
        }
    }
  }
}

Este fragmento de código es una configuración básica. Más adelante, es posible que quiera agregar parámetros.

Prueba local

La aplicación ya está lista para el desarrollo local. Puede iniciar la aplicación de funciones para probarla. Una manera de iniciar la aplicación es ejecutar func host start en la raíz de la aplicación y, a continuación, ejecutar una función básica de orquestador.

Mientras se ejecuta la aplicación de funciones, Netherite publica información de carga sobre sus particiones activas en una tabla de Azure Storage denominada DurableTaskPartitions. Puede usar Explorador de Azure Storage para comprobar que funciona según lo previsto. Si Netherite se está ejecutando correctamente, la tabla no está vacía. Para obtener un ejemplo, vea la captura de pantalla siguiente.

Recorte de pantalla que muestra los datos de la tabla DurableTaskPartitions en el Explorador de Azure Storage.

Para obtener más información sobre el contenido de la tabla DurableTaskPartitions, vea Tabla de particiones.

Oharra

Si usa la emulación de almacenamiento local en un sistema operativo Windows, asegúrese de que usa el emulador de almacenamiento de Azurite y no el componente anterior Emulador de Azure Storage. La emulación de almacenamiento local con Netherite solo se admite a través de Azurite.

Ejecución de la aplicación en Azure

Para ejecutar la aplicación en Azure, cree una aplicación de Azure Functions.

Configuración de Event Hubs

Debe configurar un espacio de nombres de Event Hubs para ejecutar Netherite en Azure. También puede configurarlo si prefiere usar Event Hubs durante el desarrollo local.

Oharra

Un espacio de nombres de Event Hubs incurre en un costo continuo, independientemente de si Durable Functions lo usa o no. Microsoft ofrece una cuenta de suscripción gratuita a Azure durante 12 meses si es la primera vez que explora Azure.

Creación de un espacio de nombres de Event Hubs

Complete los pasos para crear un espacio de nombres de Event Hubs en Azure Portal. Al crear el espacio de nombres, es posible que se le pida lo siguiente:

  • Seleccione un grupo de recursos. Use el mismo grupo de recursos que usa la aplicación de funciones.
  • Seleccione un plan y aprovisione unidades de rendimiento. Seleccione los valores predeterminados. Podrá cambiar esta configuración más adelante.
  • Seleccione una de retención de tiempo. Seleccione el valor predeterminado. Esta configuración no tiene ningún efecto en Netherite.

Obtención de la cadena de conexión de Event Hubs

Para obtener la cadena de conexión del espacio de nombres de Event Hubs, vaya al espacio de nombres de Event Hubs en Azure Portal. Seleccione Directivas de acceso compartido y, a continuación, seleccione RootManagedSharedAccessKey. Aparece un campo denominado Cadena de conexión:clave principal y el valor del campo es la cadena de conexión.

Recorte de pantalla que muestra la búsqueda de la clave principal de la cadena de conexión en Azure Portal.

Adición de la cadena de conexión como una configuración de aplicación

A continuación, agregue la cadena de conexión como una configuración de aplicación en la aplicación de funciones. Para agregarlo en Azure Portal, vaya a la vista de la aplicación de funciones, seleccione Configuracióny, a continuación, seleccione Nueva configuración de la aplicación. Puede asignar EventHubsConnection para asignar a la cadena de conexión. En los recortes de pantallas siguientes se muestran algunos ejemplos.

Recorte de pantalla que muestra la vista de la aplicación de funciones, Configuración y seleccione Nueva configuración de aplicación.

Recorte de pantalla que muestra cómo escribir EventHubsConnection como nombre y la cadena de conexión como su valor.

Habilitación del escalado en tiempo de ejecución (solo Elastic Premium)

Oharra

Omita esta sección si la aplicación no se encuentra en el plan Elastic Premium.

Si la aplicación se ejecuta en el plan Elastic Premium, se recomienda habilitar la supervisión de escalado en tiempo de ejecución para mejorar el escalado. Vaya a Configuración, seleccione Configuración del entorno de ejecución de la función y establezca Supervisión de escalado en tiempo de ejecución en En.

Recorte de pantalla que muestra cómo habilitar la supervisión de escalado en tiempo de ejecución en el portal.

Asegúrese de que la aplicación usa una arquitectura de 64 bits (solo Windows)

Oharra

Omita esta sección si la aplicación se ejecuta en Linux.

Netherite requiere una arquitectura de 64 bits. A partir de Azure Functions V4, 64 bits debe ser el valor predeterminado. Normalmente, puede validar esta configuración en Azure Portal. En Configuración, seleccione Configuración general y asegúrese de que la plataforma esté establecida en 64 bits. Si no ve esta opción en el portal, es posible que ya se ejecute en una plataforma de 64 bits. Por ejemplo, las aplicaciones Linux no muestran esta configuración porque solo admiten arquitectura de 64 bits.

Recorte de pantalla que muestra cómo configurar un entorno de ejecución para usar 64 bits en el portal.

Implementar

Ahora puede implementar el código en la nube y ejecutar las pruebas o la carga de trabajo en el mismo. Para validar que Netherite está configurado correctamente, puede revisar las métricas de Event Hubs en el portal para asegurarse de que haya actividad.

Oharra

Para obtener información sobre cómo implementar el proyecto en Azure, revise las instrucciones de implementación del lenguaje de programación en Requisitos previos.

  • Para obtener más información sobre el comportamiento de la arquitectura, la configuración y la carga de trabajo de Netherite, incluidas las pruebas comparativas de rendimiento, se recomienda echar un vistazo a la documentación de Netherite.