8. Procesando datos en Streaming en eventos de Mule


¿Alguna vez te has enfrentado a la necesidad de procesar cantidades de información que sobrepasan la memoria RAM? Aquí es donde la estrategia de Streaming se vuelve un aliado invaluable.

Imagina que necesitas procesar un archivo de 2GB, pero tu memoria RAM es limitada. Aquí es donde los Streams entran en juego, permitiéndote manejar estos desafíos sin problemas.

 

Procesando datos en Streaming

El Streaming es ese flujo continuo de datos que te salva de quedarte corto en memoria en tu aplicación. Es como un río que fluye, llevando la información en partes manejables.

Lo mejor de todo es que Mule lo maneja automáticamente. Está configurado para saltar a este modo de procesamiento de datos cuando la memoria está a punto de saturarse.

Hay dos puntos clave que debes recordar:

  1. Se activa de forma automática.
  2. Depende del tipo de Event Processor. No todos pueden cambiar al modo Stream.

 

Conectores con el modo Stream

¿Sabías que varios conectores en Mulesoft pueden aprovechar el modo de Streaming? Esto te permite manejar grandes volúmenes de datos eficientemente. Échale un vistazo a algunos de los más destacados:

  1. HTTP/HTTPS: Ideal para manejar grandes respuestas de APIs sin sobrecargar la memoria.
  2. File (Archivo): Perfecto para leer y escribir archivos grandes en fragmentos manejables.
  3. SFTP/FTP: Excelente para transferir archivos de gran tamaño entre sistemas de forma eficiente.
  4. JMS (Java Message Service): Esencial para manejar mensajes de gran tamaño en sistemas de mensajería empresarial.
  5. Database (Base de Datos): Clave para recuperar grandes conjuntos de datos de bases de datos, manteniendo un uso eficiente de la memoria.
  6. Sockets: Útil para la transmisión continua de datos en tiempo real, como en aplicaciones de chat o monitorización.
  7. Salesforce: Facilita la gestión eficiente de grandes volúmenes de datos de Salesforce.

 

Configuraciones en el modo Stream

Vamos a agrupar las opciones de Streaming disponibles en los conectores según la forma en que manejan los flujos de datos:

 

Repeatable Binary Stream

Este modo se utiliza para procesar flujos de datos binarios, como archivos o Streams de red, que pueden ser leídos varias veces. Es útil cuando se necesita acceso múltiple a los mismos datos binarios, como en el caso de procesamientos complejos o verificaciones. Los datos se pueden almacenar temporalmente en disco, lo que permite manejar grandes volúmenes que exceden la capacidad de memoria.

 

  • File Stored Repeatable (Almacenamiento en Archivo Repetible): En esta modalidad, los datos se almacenan en un archivo temporal en el disco duro. Mulesoft utiliza buffers para leer y escribir estos datos en fragmentos. Al procesar, lee una porción de datos (un buffer), la procesa, y luego pasa a la siguiente porción, permitiendo así el manejo eficiente de grandes volúmenes de datos. Debido a que los datos están almacenados en disco, pueden ser leídos múltiples veces si es necesario. Los objetos que exceden la capacidad de memoria se serializan utilizando Kryo y es la configuración predeterminada para Mule Enterprise Edition.

 

Repeatable Object Stream

En este escenario, los datos se manejan como objetos y se almacenan en memoria, permitiendo su acceso repetido. Es ideal para conjuntos de datos más pequeños y manejables donde se requiere procesar o revisar los mismos datos múltiples veces. Este modo es limitado por la capacidad de memoria disponible y se utiliza para flujos de datos que pueden ser mantenidos en la memoria sin afectar el rendimiento.

 

  • In-Memory Repeatable (En Memoria Repetible): Aquí, los datos se almacenan en buffers dentro de la memoria RAM. Al igual que en el almacenamiento en archivo, Mulesoft procesa los datos en fragmentos. Sin embargo, al estar en memoria, el acceso a estos datos es más rápido. Esta configuración es ideal para datos que son relativamente pequeños y que se necesitan procesar o acceder repetidamente, aprovechando la rapidez del acceso a la memoria. Utiliza un tamaño máximo de buffer predeterminado de 500 objetos. El buffer se expande desde un tamaño inicial (por defecto, 100 objetos) en incrementos predeterminados (generalmente 100 objetos), hasta alcanzar el tamaño máximo del buffer. Si los Streams exceden el tamaño máximo del buffer, entonces la aplicación falla. Esta configuración es la predeterminada para Mule Community Edition.

 

Non-Repeatable Binary Stream

Este modo se aplica a flujos de datos binarios que solo necesitan ser leídos una vez. No hay almacenamiento de datos para accesos repetidos, lo que lo hace más eficiente en términos de uso de memoria y rendimiento. Es adecuado para procesar grandes volúmenes de datos que no necesitan ser revisados o para flujos de datos en tiempo real donde cada pieza de datos solo se procesa una vez.

  • Non-Repeatable (No Repetible): En este modo, Mulesoft utiliza buffers para leer los datos una sola vez. Una vez que un buffer de datos ha sido procesado, se descarta y se lee el siguiente. Esto minimiza el uso de memoria ya que no se retiene una copia de los datos procesados. No hay sobrecarga adicional de memoria o rendimiento en comparación con los Streams repetibles. Es una opción eficiente cuando los datos no necesitan ser revisados o procesados múltiples veces, ya que se minimiza el uso de recursos.

 

Conclusión

Dominar el Streaming en Mulesoft no solo optimiza el uso de la memoria sino que también abre un mundo de posibilidades en la gestión de datos. Ya sea que estés manejando archivos enormes, flujos de datos en tiempo real o grandes conjuntos de datos de Salesforce, el Streaming es tu herramienta clave para mantener tu aplicación ágil y eficiente. ¡No te quedes atrás y sácale el máximo provecho a Mulesoft!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *