Eventos
Compilación de Intelligent Apps
17 mar, 21 - 21 mar, 10
Únase a la serie de reuniones para crear soluciones de inteligencia artificial escalables basadas en casos de uso reales con compañeros desarrolladores y expertos.
Regístrese ahoraEste explorador ya no se admite.
Actualice a Microsoft Edge para aprovechar las características y actualizaciones de seguridad más recientes, y disponer de soporte técnico.
Durable Functions es un conjunto de desencadenadores y enlaces de Azure Functions con tecnología interna de Durable Task Framework (DTFx). DTFx admite varios proveedores de almacenamiento de back-end, incluido el proveedor de Azure Storage que usa Durable Functions. A partir de la versión 2.5.0 de Durable Functions, los usuarios pueden configurar sus aplicaciones de funciones para que usen proveedores de almacenamiento de DTFx distintos del proveedor de Azure Storage.
Nota
Para muchas aplicaciones de functions, es probable que el proveedor de Azure Storage predeterminado para Durable Functions sea suficiente y sea el más fácil de usar, ya que no requiere ninguna configuración adicional. Sin embargo, hay compensaciones de coste, escalabilidad y administración de datos que pueden favorecer el uso de un proveedor de almacenamiento alternativo.
Se han desarrollado dos proveedores de almacenamiento alternativos para su uso con Durable Functions y Durable Task Framework, concretamente el proveedor de almacenamiento de Netherite y el proveedor de almacenamiento de Microsoft SQL Server (MSSQL). En este artículo se describen los tres proveedores admitidos, se comparan entre sí y se proporciona información básica sobre cómo empezar a usarlos.
Nota
Actualmente no es posible migrar datos de un proveedor de almacenamiento a otro. Si desea usar un nuevo proveedor de almacenamiento, debe crear una aplicación configurada con el nuevo proveedor de almacenamiento.
Azure Storage es el proveedor de almacenamiento predeterminado para Durable Functions. Usa colas, tablas y blobs para conservar la orquestación y el estado de la entidad. También usa blobs y concesiones de blobs para administrar particiones. En muchos casos, la cuenta de almacenamiento que se usa para almacenar el estado del entorno de ejecución de Durable Functions es la misma que la cuenta de almacenamiento predeterminada que usa Azure Functions (AzureWebJobsStorage
). Sin embargo, también es posible configurar Durable Functions con una cuenta de almacenamiento independiente. El proveedor de Azure Storage está integrado en la extensión de Durable Functions y no tiene ninguna otra dependencia.
Entre las principales ventajas del proveedor de Azure Storage se incluyen:
El código fuente de los componentes de DTFx del proveedor de almacenamiento de Azure Storage se puede encontrar en el repositorio de GitHub Azure/durabletask.
Nota
Las cuentas estándar de uso general de Azure Storage son necesarias cuando se usa el proveedor de Azure Storage. No se admite ningún otro tipo de cuenta de almacenamiento. Se recomienda encarecidamente usar cuentas de almacenamiento de uso general v1 heredadas, ya que las cuentas de almacenamiento v2 más recientes pueden ser significativamente más costosas para las cargas de trabajo de Durable Functions. Para obtener más información sobre los tipos de cuentas de Azure Storage, consulte la documentación de información general acerca de la cuenta de Azure Storage.
Microsoft Research diseñó y desarrolló el back-end de almacenamiento de Netherite. Usa Azure Event Hubs y la tecnología de base de datos FASTER además de blobs en páginas de Azure. El diseño de Netherite permite un procesamiento de orquestaciones y entidades significativamente más elevado en comparación con otros proveedores. En algunos escenarios de punto de referencia, se ha demostrado que el rendimiento aumenta en más de un orden de magnitud en comparación con el proveedor predeterminado de Azure Storage.
Entre las principales ventajas del proveedor de Netherite se incluyen:
Puede obtener más información sobre los detalles técnicos del proveedor de almacenamiento de Netherite, incluida información sobre cómo empezar a usarlo, en la documentación de Netherite. El código fuente del proveedor de almacenamiento de Netherite se puede encontrar en el repositorio de GitHub microsoft/durabletask-netherite. También hay disponible una evaluación más detallada del proveedor de almacenamiento de Netherite en el siguiente documento de investigación: Flujos de trabajo sin servidor con Durable Functions y Netherite.
Nota
El nombre de Netherite tiene origen en el mundo de Minecraft.
El proveedor de almacenamiento de Microsoft SQL Server (MSSQL) conserva todo el estado en una base de datos de Microsoft SQL Server. Es compatible con las implementaciones locales y hospedadas en la nube de SQL Server, lo que incluye Azure SQL Database.
Entre las principales ventajas del proveedor de MSSQL se incluyen:
Puede obtener más información sobre los detalles técnicos del proveedor de almacenamiento de MSSQL, incluida información sobre cómo empezar a usarlo, en la documentación del proveedor de Microsoft SQL. El código fuente del proveedor de almacenamiento de MSSQL se puede encontrar en el repositorio de GitHub microsoft/durabletask-mssql.
La configuración de proveedores de almacenamiento alternativos suele ser un proceso de dos pasos:
Si no hay ningún proveedor de almacenamiento configurado explícitamente en host.json, el proveedor de Azure Storage se habilitará de manera predeterminada.
El proveedor de Azure Storage es el proveedor de almacenamiento predeterminado y no requiere ninguna configuración explícita, referencias de paquetes NuGet ni referencias de agrupaciones de extensiones. Puede encontrar el conjunto completo de opciones de configuración de host.jsonaquí, en la ruta de acceso extensions/durableTask/storageProvider
.
La propiedad connectionName
de host.json es una referencia a la configuración del entorno que especifica cómo se debe conectar la aplicación a Azure Storage. Puede especificar lo siguiente:
Si el valor configurado es tanto una coincidencia exacta de una única configuración como una coincidencia de prefijo de otras configuraciones, se usa la coincidencia exacta. Si no se especifica ningún valor en host.json, el valor predeterminado es AzureWebJobsStorage
.
Si usa la versión 2.7.0.x o posterior de la extensión y el proveedor de almacenamiento de Azure, en lugar de usar una cadena de conexión con un secreto, puede hacer que la aplicación use una identidad de Microsoft Entra. Para ello, definiría la configuración con un prefijo común que se asigne a la propiedad connectionName
en la configuración de desencadenador y enlace.
Para usar una conexión basada en identidades para Durable Functions, configure las siguientes opciones de la aplicación:
Propiedad | Plantilla de variable de entorno | Descripción | Valor de ejemplo |
---|---|---|---|
URI de Blob service | <CONNECTION_NAME_PREFIX>__blobServiceUri |
El identificador URI del plano de datos del servicio de blobs de la cuenta de almacenamiento, con el esquema HTTPS. | https://<storage_account_name>.blob.core.windows.net |
URI de Queue service | <CONNECTION_NAME_PREFIX>__queueServiceUri |
El identificador URI del plano de datos del servicio de cola de la cuenta de almacenamiento, con el esquema HTTPS. | https://<storage_account_name>.queue.core.windows.net |
URI del servicio de tablas | <CONNECTION_NAME_PREFIX>__tableServiceUri |
El URI del plano de datos de un Table service de la cuenta de almacenamiento, con el esquema HTTPS. | https://<nombre_cuenta_almacenamiento>.table.core.windows.net |
Se pueden establecer propiedades adicionales para personalizar la conexión. Consulte Propiedades comunes para conexiones basadas en identidades.
Cuando se hospeda en el servicio de Azure Functions, las conexiones basadas en identidades usan una identidad administrada. La identidad asignada por el sistema se usa de manera predeterminada, aunque se puede especificar una identidad asignada por el usuario con las propiedades credential
y clientID
. Tenga en cuenta que no se admite la configuración de una identidad asignada por el usuario con un identificador de recurso. Cuando se ejecuta en otros contextos, como el de desarrollo local, se usa en su lugar la identidad del desarrollador, aunque se puede personalizar. Consulte Desarrollo local con conexiones basadas en identidades.
Cualquier identidad que se utilice debe tener permisos para realizar las acciones previstas. Para la mayoría de los servicios de Azure, esto significa que debe asignar un rol en Azure RBAC mediante roles integrados o personalizados que proporcionen esos permisos.
Importante
Es posible que el servicio de destino muestre algunos permisos que no son necesarios para todos los contextos. Siempre que sea posible, respete el principio de privilegios mínimos y conceda solo los privilegios necesarios a la identidad. Por ejemplo, si la aplicación solo necesita poder leer desde un origen de datos, use un rol que solo tenga permiso de lectura. Sería inadecuado asignar un rol que también permita escribir en ese servicio, ya que sería un permiso excesivo para una operación de lectura. De forma similar, le interesa asegurarse de que la asignación de roles esté limitada solo a los recursos que se deben leer.
Deberá crear una asignación de roles que proporcione acceso a Azure Storage en tiempo de ejecución. Los roles de administración, como Propietario, no son suficientes. Se recomiendan los roles integrados siguientes al usar la extensión Durable Functions con un funcionamiento normal:
Puede que la aplicación precise más permisos en función del código que escriba. Si usa el comportamiento predeterminado o establece connectionName
explícitamente en "AzureWebJobsStorage", consulte Conexión al almacenamiento de host con una identidad para otras consideraciones de permisos.
La habilitación del proveedor de almacenamiento de Netherite requiere un cambio de configuración en host.json
. Para los usuarios de C#, también requiere un paso de instalación adicional.
En el ejemplo siguiente de host.json se muestra la configuración mínima necesaria para habilitar el proveedor de almacenamiento de Netherite.
{
"version": "2.0",
"extensions": {
"durableTask": {
"storageProvider": {
"type": "Netherite",
"storageConnectionName": "AzureWebJobsStorage",
"eventHubsConnectionName": "EventHubsConnection"
}
}
}
}
Para obtener instrucciones de configuración más detalladas, consulte la documentación de introducción a Netherite.
Nota
Si la aplicación usa conjuntos de extensiones debe omitir esta sección, ya que estos conjuntos de extensiones evitan la necesidad de administrar las extensiones manualmente.
Deberá instalar la versión más reciente de la extensión de Netherite en NuGet. Por lo general, esto significa incluir una referencia a la misma en el archivo .csproj
y la compilación del proyecto.
El paquete de extensión que se va a instalar depende del trabajo de .NET que use:
Microsoft.Azure.DurableTask.Netherite.AzureFunctions
.Microsoft.Azure.Functions.Worker.Extensions.DurableTask.Netherite
.La habilitación del proveedor de almacenamiento MSSQL requiere un cambio de configuración en host.json
. Para los usuarios de C#, también requiere un paso de instalación adicional.
En el ejemplo siguiente se muestra la configuración mínima necesaria para habilitar el proveedor de almacenamiento de MSSQL.
{
"version": "2.0",
"extensions": {
"durableTask": {
"storageProvider": {
"type": "mssql",
"connectionStringName": "SQLDB_Connection"
}
}
}
}
Para obtener instrucciones de configuración más detalladas, consulte la documentación de introducción a MSSQL.
Nota
Si la aplicación usa conjuntos de extensiones debe omitir esta sección, ya que estos conjuntos de extensiones evitan la necesidad de administrar las extensiones manualmente.
Tendrá que instalar la versión más reciente de la extensión del proveedor de almacenamiento MSSQL en NuGet. Por lo general, esto significa incluir una referencia a la misma en el archivo .csproj
y la compilación del proyecto.
El paquete de extensión que se va a instalar depende del trabajo de .NET que use:
Microsoft.DurableTask.SqlServer.AzureFunctions
.Microsoft.Azure.Functions.Worker.Extensions.DurableTask.SqlServer
.Hay muchos contrapartidas entre los distintos proveedores de almacenamiento admitidos. La tabla siguiente se puede usar para ayudarle a comprender estas contrapartidas y decidir qué proveedor de almacenamiento es mejor para sus necesidades.
Proveedor de almacenamiento | Azure Storage | Netherite | MSSQL |
---|---|---|---|
Estado de soporte técnico oficial | ✅ Disponible con carácter general | ✅ Disponible con carácter general | ✅ Disponible con carácter general |
Dependencias externas | Cuenta de Azure Storage (uso general v1) | Azure Event Hubs Cuenta de Azure Storage (de uso general) |
SQL Server 2019 o Azure SQL Database |
Opciones de emulación y desarrollo local | Azurite v3.12+ (multiplataforma) | Admite la emulación en memoria de las centrales de tareas (más información) | SQL Server Developer Edition (admite contenedores de Windows, Linux y Docker) |
Configuración de la central de tareas | Explícito | Explícito | Implícita de manera predeterminada (más información) |
Rendimiento máximo | Moderada | Muy alto | Moderada |
Escalabilidad horizontal máxima de orquestación o entidad (nodos) | 16 | 32 | N/D |
Escalabilidad horizontal máxima de actividad (nodos) | N/D | 32 | N/D |
Compatibilidad con entidades duraderas | ✅ Totalmente compatible | ✅ Totalmente compatible | ️⚠ Compatible, excepto cuando se usa .NET aislado |
Compatibilidad con el escalado de KEDA 2.0 (más información) |
❌ No se admite | ❌ No se admite | ✅ Compatible con Scaler de MSSQL (más información) |
Compatibilidad con agrupaciones de extensiones (recomendado para aplicaciones que no son .NET) | ✅ Totalmente compatible | ✅ Totalmente compatible | ✅ Totalmente compatible |
¿Se puede configurar el precio y el rendimiento? | ❌ No | ✅ Sí (TU y CPU de Event Hubs) | ✅ Sí (vCPU de SQL) |
Compatibilidad con entornos desconectados | ❌ Se requiere conectividad de Azure | ❌ Se requiere conectividad de Azure | ✅ Totalmente compatible |
Conexiones basadas en identidades | ✅ Totalmente compatible | ❌ No se admite | ⚠️ Requiere escalado controlado por el entorno de ejecución |
Plan de consumo flexible | ✅ Totalmente compatible (ver notas) | ❌ No se admite | ❌ No se admite |
Eventos
Compilación de Intelligent Apps
17 mar, 21 - 21 mar, 10
Únase a la serie de reuniones para crear soluciones de inteligencia artificial escalables basadas en casos de uso reales con compañeros desarrolladores y expertos.
Regístrese ahoraCursos
Ruta de aprendizaje
Ejecución de aplicaciones de informática de alto rendimiento (HPC) en Azure - Training
Azure HPC es una capacidad en la nube creada a propósito para la carga de trabajo de IA y de HPC, mediante procesadores de vanguardia e interconexión InfiniBand de clase HPC, con el fin de ofrecer el mejor rendimiento, escalabilidad y valor de la aplicación. Azure HPC permite a los usuarios desbloquear la innovación, la productividad y la agilidad empresarial, mediante una gama de tecnologías de inteligencia artificial y de HPC de alta disponibilidad que se pueden asignar dinámicamente a medida que cambian
Certificación
Microsoft Certified: Azure Cosmos DB Developer Specialty - Certifications
Escribe consultas eficaces, crea directivas de indexación, administra y aprovisiona recursos en la API de SQL y el SDK con Microsoft Azure Cosmos DB.