Integración+batch+(procesamiento+por+lotes)
Integración batch (procesamiento por lotes)
Procesamiento por lotes - Definición
Ventajas
Procesamiento por lotes vs en flujo
Elementos de un trabajo por lotes
Propiedades y Parámetros
Lote y estado de salida
Herramientas y soluciones para el procesamiento por lotes en entornos Java
Modulo Planner en Onesait Platform
Spring Batch
Grandes Volúmenes de datos
Procesamiento por lotes - Definición
El procesamiento por lotes es un método de ejecución de tareas de datos repetitivas y de gran volumen. El método por lotes permite a los usuarios procesar datos cuando se disponga de recursos informáticos y con poca o nula interacción del usuario. Con el procesamiento por lotes, los usuarios recaban y almacenan los datos y luego los procesan durante un lapso conocido como "ventana de lote". El procesamiento por lotes mejora la eficiencia al establecer prioridades de procesamiento y completar las tareas de datos en el momento en que mejor convenga.
El procesamiento por lotes desempeña un papel crítico a la hora de ayudar a empresas y organizaciones a administrar grandes cantidades de datos con eficiencia. Es especialmente apto para el manejo de tareas frecuentes y repetitivas, como los procesos de contabilidad. En todos los sectores y para todas las tareas, los fundamentos básicos del procesamiento por lotes siguen siendo los mismos. Los parámetros esenciales son básicamente el emisor de la tarea, el programa que se ejecutará, el instante de ejecución del mismo y la ubicación de los archivos de entrada y salida.
Ventajas
Eficiencia: El procesamiento por lotes permite a una empresa procesar tareas cuando la computación u otros recursos estén disponibles. Las empresas pueden priorizar las tareas más urgentes y programar procesamientos por lotes para las que corran menos prisa. Además, los sistemas por lotes puede ejecutarse sin conexión con el fin de minimizar la presión sobre los procesadores.
Simplicidad: en comparación con el procesamiento en flujo, el procesamiento por lotes es un sistema menos complejo que no requiere de ningún hardware especial ni de soporte de sistema para introducir datos. Una vez establecido, un sistema de procesamiento por lotes necesita menos mantenimiento que cuando se procesa en flujo.
Calidad de datos mejorada: como el procesamiento por lotes automatiza la mayoría si no todos los componentes de una tarea de procesamiento y minimiza la interacción del usuario, se reducen las oportunidades de cometer errores. Mejoran la precisión y la exactitud y se produce un grado más elevado de calidad de datos.
Business intelligence más rápida: el procesamiento por lotes permite a las empresas tratar grandes volúmenes de datos rápidamente. Como se pueden procesar muchos registros a la vez, el procesamiento por lotes acelera el tiempo de procesamiento y suministra datos para que las empresas puedan emprender acciones en el momento oportuno. Y dado que se pueden gestionar varias tareas simultáneamente, se obtiene business intelligence mucho más rápidamente que antes.
Procesamiento por lotes vs en flujo
Cuando se trata de decidir qué método de procesamiento de datos es el más adecuado, no existe una única respuesta correcta. Se trata de encontrar una solución que se adapte mejor a la empresa, los datos y la situación. En algunos casos el procesamiento por lotes supone el enfoque más rentable para gestionar tareas. En otros casos, el acceso a datos en flujo resultará esencial. Muchas empresas optan por ambos métodos. El procesamiento por lotes maneja grandes cantidades de datos no continuos. Es capaz de tratar datos rápidamente, minimizar o eliminar la necesidad de interacción con el usuario y mejorar la eficiencia del procesamiento de tareas. Puede ser la opción ideal para gestionar actualizaciones de bases de datos, procesar transacciones o convertir archivos de un formato a otro.
El procesamiento en flujo es adecuado para datos continuos y es conveniente para sistemas o procesos que dependan del acceso a los datos en tiempo real. Si la puntualidad es fundamental para un proceso, es probable que el procesamiento en flujo sea la mejor opción. Por ejemplo, las empresas del ámbito de la ciberseguridad, así como las que trabajan con dispositivos conectados, como los equipos médicos, dependen del tratamiento en flujo para suministrar datos en tiempo real.
En algunos casos, puede que la misma empresa emplee ambos tipos de procesos: en flujo para tareas de datos que corren prisa y por lotes para las demás. Por ejemplo, podría ser que una empresa del sector sanitario que distribuya dispositivos médicos portátiles utilizara el procesamiento en flujo para recabar y monitorizar los datos del dispositivo. Sin embargo, el procesamiento por lotes podría salir más rentable para manejar los ciclos de facturación de sus clientes.
Elementos de un trabajo por lotes
Los principales elementos en los que se basa el funcionamiento del procesamiento de un trabajo por lotes son los siguientes:
Pasos (steps): se describen en Introducción al procesamiento por lotes y pueden estar orientados a fragmentos o a tareas. Si los pasos son orientados a fragmentos, pueden ser particionados, por lo que estos pasos pueden ejecutarse en más de un hilo.
Flujos: secuencia de pasos que se ejecutan como una unidad. Una secuencia de pasos relacionados se puede agrupar en un flujo. Los pasos en un flujo no pueden pasar a pasos fuera del flujo. El flujo pasa al siguiente elemento cuando se completa su último paso.
Splits (divisiones): conjunto de flujos que se ejecutan en paralelo; cada flujo corre en un hilo separado. La división pasa al siguiente elemento cuando se completan todos sus flujos.
Elementos de decisión: utilizan el estado de salida del paso anterior para determinar el siguiente paso o para finalizar el trabajo por lotes.
Flujo de ejemplo de procesamiento mediante varios steps
Propiedades y Parámetros
Los trabajos y los pasos pueden tener varias propiedades asociadas a ellos. Defina propiedades en el archivo de definición de trabajo, y los artefactos por lotes acceden a estas propiedades utilizando objetos de contexto del tiempo de ejecución por lotes. El uso de propiedades de esta manera le permite desacoplar parámetros estáticos del trabajo de la lógica empresarial y reutilizar artefactos por lotes en diferentes archivos de definición de trabajo. La especificación de propiedades se describe en Uso del lenguaje de especificación de trabajos, y el acceso a propiedades en artefactos por lotes se describe en Creación de artefactos por lotes.
Las aplicaciones Java EE también pueden pasar parámetros a un trabajo cuando lo envían al tiempo de ejecución por lotes. Esto le permite especificar parámetros dinámicos que solo se conocen en tiempo de ejecución. Los parámetros también son necesarios para los pasos particionados, ya que cada partición necesita saber, por ejemplo, qué rango de elementos procesar. La especificación de parámetros al enviar trabajos se describe en Enviar trabajos al Batch Runtime. La especificación de parámetros para pasos particionados y el acceso a ellos en artefactos por lotes se muestra en la aplicación de ejemplo de facturación telefónica.
Lote y estado de salida
El estado de los trabajos, pasos, divisiones y flujos se representa en el tiempo de ejecución del lote como un valor de estado del lote. Los valores de estado del lote se enumeran a continuación. Se representan como cadenas.
Valor | Descripción |
STARTING | El trabajo se ha enviado al tiempo de ejecución por lotes. |
STARTED | Trabajo corriendo. |
STOPPING | Solicitud de parada de un trabajo. |
STOPPED | Trabajo parado. |
FAILED | Ejecución del trabajo finalizado debido a un error. |
COMPLETED | Ejecución de un trabajo finalizado con éxito. |
ABANDONED | El trabajo ha sido marcado como abandonado |
Las aplicaciones Java EE pueden enviar trabajos y acceder al estado del lote de un trabajo utilizando la interfaz JobOperator, como se describe en Enviar trabajos al tiempo de ejecución del lote. Los archivos de definición de trabajos pueden hacer referencia a los valores de estado del lote utilizando el Lenguaje de especificación de trabajos (JSL), como se describe en Uso del lenguaje de especificación de trabajos. Los artefactos por lotes pueden acceder a los valores de estado de los lotes utilizando objetos de contexto, como se describe en Uso de los objetos de contexto del tiempo de ejecución de lotes.
Para los flujos, el estado del lote es el de su último paso. Para las divisiones, el estado del lote es el siguiente:
Valor | Descripción |
COMPLETED | si todos sus flujos tienen un estado de lote COMPLETED |
FAILED | si algún flujo tiene un estado de lote de FAILED |
STOPPED | si algún flujo tiene un estado de lote STOPPED y ningún flujo tiene un estado de lote de FAILED |
El estado de ejecución del lote establece el estado del lote para trabajos, pasos, divisiones y flujos. Los trabajos, pasos, divisiones y flujos también tienen un estado de salida, que es un valor definido por el usuario basado en el estado del lote. Puede establecer el estado de salida dentro de los artefactos por lotes o en el archivo de definición de trabajo. Puede acceder al estado de salida de la misma manera que el estado del lote, descrito anteriormente. El valor predeterminado para el estado de salida es el mismo que el estado del lote.
Herramientas y soluciones para el procesamiento por lotes en entornos Java
Existen diferentes herramientas y tecnologías para la realización del procesamiento de lotes. Entre los entornos posibles, encontramos:
Modulo Planner en Onesait Platform
Se trata de un modulo de la OnesaitPlatform para casos de uso sencillos en los que, a través de su interfaz web (control panel), puedes realizar configuraciones simples de lanzamientos de una Servicio Rest (microservicio). Se recomienda para situaciones en las que no es necesario un control sofisticado de re intentos, gestión de pasos/lotes etc etc.
Puedes encontrar la información en https://onesaitplatform.atlassian.net/wiki/spaces/OP/pages/303071305/How+to+use+Planner+for+REST+Services
Spring Batch
SpringBatch es el principal framework escogido como referencia para el desarrollo de casos de uso con todo lo necesario para procesamientos diferidos y por lotes.
Puedes encontrar más información de como utilizarlo en Guía de uso de Spring Batch
Grandes Volúmenes de datos
También se especifican herramientas para los tratamientos en entornos big data, donde dependiendo del caso y las necesidades, habrá algunas que se adecuen más que otras.
Grandes volumenes de datos (big data):
Apache Storm
Apache Hadoop
Elastic Search
MongoDB
Apache Spark
Apache Cassandra
StreamSQL
StreamSets