¿Qué es Apache Ignite?

Apache Ignite (también conocido como Ignite In-Memory Data Fabric) es una Plataforma Java en memoria, distribuida y de alto rendimiento para procesar grandes volúmenes de datos en tiempo real y de forma muy sencilla (sintaxis SQL).

Si tuviera que definirlo con dos palabras lo definiría así:

Ignite=Hazelcast+Siddhi CEP

Aunque aún es un proyecto en incubación ofrece un conjunto de características muy interesantes, como puede verse en la imagen:

De hecho esto permite ver Ignite como un conjunto de componentes integrados para procesamiento en memoria de grandes volúmenes de datos (CEP, consultas SQL, computación, Grid, integración con Hadoop,…)

  • Advanced Clustering Los nodos Ignite se autodescubren lo que permite redimensionar dinámicamente este. Incluso pueden conectar entre redes teniendo nodos locales y nodos remotos.
  • Data Grid (JCache) Soporta escalabilidad horizontal. Los datos pueden ser locales, replicados y particionados. Permite consultar estos datos siguiendo sintaxis SQL (incluso JOINS distribuidas). Además se le puede atacar vía driver JDBC (jdbc:ignite://<hostname>:<port>/<cache_name>)
  • Streaming & CEP Ignite Streaming soporta procesamiento en streaming (hasta millones de eventos por segundo)
  • Compute Grid soporta computación distribuida permitiendo paralelizar tareas
  • Service Grid permite desplegar servicios creados por el usuario en el cluster
  • Ignite File System IGFS es un sistema de ficheros en memoria que permite trabajar como si tuviéramos ficheros y directorios.
  • Distributed Data Structures soporta Set y Queues distribuidas
  • Distributed Messaging soporta comunicación entre nodos basadas en Tópicos que pueden agruparse en rupos.
  • Distributed Events Permite recibir notificaciones sobre eventos que suceden en el cluster
  • Hadoop Accelerator ofrece componentes para integrar con Hadoop

Este ejemplo típico de Contar palabras nos da una idea de la potencia de Ignite:

http://apacheignite.readme.io/v1.1/docs/streaming-example