Acceso a la cuenta de Batch mediante la biblioteca cliente de .NET
En la unidad anterior, ha creado cuentas de Azure Batch y Azure Storage. Después, cargó ffmpeg como una aplicación para que los trabajos de Batch la puedan usar para sus tareas. Se revisará el escenario una vez más.
Le gustaría automatizar el proceso de conversión de archivos de vídeo MP4 en archivos GIF animados. Para ello, creará una aplicación que pueda cargar archivos de vídeo para la conversión, iniciar la conversión en paralelo en todos los archivos cargados, supervisar el progreso y, por último, descargar los resultados.
En esta unidad, se analizarán las bibliotecas cliente de Azure Batch que se pueden usar para acceder a las cuentas de Batch y Storage que se han creado en el ejercicio anterior.
Bibliotecas cliente de Azure
Hay dos paquetes NuGet que tiene que importar en la aplicación. El primero es la biblioteca cliente de Azure Batch, Microsoft.Azure.Batch
. Usará esta biblioteca para crear y eliminar grupos de Azure Batch, crear y eliminar trabajos de carga de trabajo, crear y eliminar tareas, y supervisar las tareas en ejecución.
La siguiente biblioteca que se usará en la solución es la biblioteca cliente de Azure Storage, Microsoft.Azure.Storage.Blob
, que permite conectarse a los archivos de una cuenta de Azure Storage y administrarlos. Usará esta biblioteca para administrar los archivos en el contenedor de almacenamiento de blobs. La aplicación busca todos los vídeos cargados en la carpeta y proporciona acceso al trabajo para escribir los vídeos convertidos por las tareas.
La biblioteca de administración de Azure Batch, Microsoft.Azure.Management.Batch
, es una biblioteca terceros que no es necesaria para la aplicación porque las cuentas de almacenamiento y Batch se crearon manualmente.
Se agregarán los paquetes NuGet necesarios en la unidad siguiente con el comando dotnet add package
.
Patrón de uso típico
Con las bibliotecas anteriores, un enfoque habitual para configurar un proceso por lotes es el siguiente:
- Se crea una cuenta del servicio Batch (API de administración de Batch).
- Se crea una cuenta de almacenamiento (API de almacenamiento).
- Se crea un cliente de blob para administrar el procesamiento de archivos (API de almacenamiento).
- Se cargan los archivos que se van a procesar (API de almacenamiento).
- Se crea un grupo de nodos de ejecución (API de Batch).
- Se crea un trabajo para ejecutarlo en esos nodos (API de Batch).
- Se agrega una tarea para que la ejecute el trabajo (API de Batch).
- Se supervisa el progreso de la tarea (API de Batch).
- Se descargan los archivos procesados cuando hayan terminado (API de almacenamiento).
- Se elimina el contenedor de almacenamiento de entrada, el grupo y el trabajo (API de Batch y API de almacenamiento).
Grupos de Azure Batch
Una característica eficaz de Azure Batch es el modo de administrar los recursos de proceso. Mediante la definición de grupos de recursos, Azure Batch tiene la flexibilidad para establecerse en un número específico de nodos. Esta es una buena opción si el tamaño del procesamiento está bien definido y es necesario tener un coste fijo conocido. La otra opción consiste en permitir que el grupo se escale vertical u horizontalmente de forma automática según una fórmula que defina. Este enfoque tiene en cuenta las fluctuaciones de la demanda y permite que una aplicación se pueda escalar para satisfacer esa demanda. Este enfoque también tiene ventaja adicional de mantener los costes tan bajos como sea posible.
Al crear grupos de Azure Batch, se especifican los siguientes atributos:
- El número de nodos de destino (límite predeterminado de 100)
- El sistema operativo y la versión del nodo (hay disponible una serie de imágenes de Windows y Linux).
- El tipo de nodo, dedicado o de baja prioridad (los nodos dedicados son más caros pero no se pueden reemplazar, mientras que los nodos de baja prioridad son más baratos, ya que aprovechan la capacidad sobrante de una región pero sus tareas se podrían suspender si los recursos se necesitasen en otro lugar)
- El rendimiento de los nodos, como el tamaño del almacenamiento, la memoria y el procesador
- La directiva de escalado automático (el escalado se controla mediante una fórmula que usted especifique, por ejemplo, en función del porcentaje de CPU en uso)
- La directiva de programación de tareas (controlar el número máximo de tareas que un nodo puede ejecutar en paralelo y elegir cómo se distribuyen las tareas entre los nodos).
- Las tareas de inicio que se deben ejecutar al arrancar los nodos (se usa para configurar el nodo con el fin de que pueda ejecutar las tareas, como la instalación de las aplicaciones necesarias)
- La configuración de red (opciones de subred y red virtual).
- Los paquetes de aplicación (permitir que las aplicaciones se implementen con facilidad en todos los nodos de un grupo).