Hazelcast Jet es un motor de procesamiento creado por Hazelcast para el procesamiento de grandes volumenes de datos en streaming.
Jet puede trabajar embebido en Hazelcast IMDG o por separado, pero aumentas sus prestaciones cuando lo hace junto IMDG.
La versión actual de Jet es la 0.4.
Motor de procesamiento
El motor de procesamiento se basa en el procesamiento de grafos acíclicos dirigidos. Básicamente el grafo modela el flujo de trabajo a través de un DAG (tipo de dato DAG). Cada vértice de este grafo es un paso en el flujo de trabajo y puede procesar, emitir y recibir datos.
Aunque los vértices se instancian a partir de la clase Vertex, podemos distinguir tres tipos de vértices distintos a efectos prácticos; los vértices source que no reciben la entrada de otro vértice pero envían a otros un flujo de información, los vertices sink desde los que se realiza la transferencia de información entre unos vértices y otros, y los vértices internal que reciben un flujo de información y producen uno de salida.
La forma en que se comunican los vértices es a través de los Edges (aristas).
Cuando nos referimos a una instancia de Jet hablamos de una unidad de procesamiento. Cada instancia se convierte en una unidad del clúster, desde la que se puede acceder a cualquier otra instancia del clúster.
Ventajas y desventajas de Jet
Como ventaja principal podemos destacar su facilidad para ser programado, aunque esto puede complicarse por culpa de las implementaciones que debemos hacer de la case abstracta AbstractProcess para poder enviar procesos para que se ejecuten en un vértice. También es útil cuando se apoya en IMDG para crear y mantener clústeres.
Por el contrario, Jet áun esta muy verde, actualmente se siguen implementando funcionalidades para suplir algunos problemas que son bastante graves y que sin duda suponen que se aplique menos a problemas reales, como por ejemplo:
Jet solo puede detectar un eror en el miembro del cluster que se ejecuta, y lo puede parar, pero el resto de vertices no es informado de el error, esta falta de tolerancia a fallos es muy grave y afecta mucho a las decisiones previas a la hora de implantar una tecnología u otra.
No admite la incorporación en caliente, un nuevo nodo no se unirá al cluster si este esta ejecutando un DAG, a no ser que se realice un replanteamiento de la tarea.