eBay acaba de liberar bajo licencia Apache 2 Pulsar.

Sus creadores lo definen así:

Pulsar es un es plataforma para el procesamiento de streams y analítica en tiempo real. Pulsar puede usarse para recolectar y procesar eventos de usuario y de negocio en tiempo real y para generar métricas y agregaciones sobre ventanas temporales todo esto siguiendo un lenguaje SQL-like.

Pulsar escala a millones de eventos por segundo en alta disponibilidad, se integra fácilmente con strores como Cassandra.

(Vamos lo que de toda la vida se define como un CEP :D)

Pulsar fue creado con estos objetivos:

· Escalabilidad: escalando a millones de eventos por segundo

· Latencia: procesamiento y entrada en órdenes menores de segundo

· Disponibilidad: sin caída del cluster durante actualización del software, actualización de las reglas y cambios en la topología

· Felxibilidad: facilidad para definir y cambias la lógica de procesamiento, ruteado de eventos, topologís

· Productividad: soporte para CEP y un lenguaje 4GL para filtrado de datos, agregación y procesamiento stateful

· 99,9% Data Delivery

· Despliegue en Cloud: los nodos pueden distribuirse entre data centers

FLUJO:

El flujo de Pulsar consiste en varios estados no acoplados.

Los eventos se transportan de forma asíncrona entre el pipeline lo que simplifica la escalabilidad permitiendo que cada estado pueda construirse y operarse de forma independiente.

LENGUAJE DE CONSULTAS:

Al estilo de los CEPs más tradicionales Pulsar ofrece un lenguaje de consultas SQL-like:

DESPLIEGUE:

La lógica CEP de Pulsar se despliega en diversos nodos (CEP cells = celda CEP), cada celda CEP se configure con un canal de entrada, un canal de salida y una lógica de proceso.

Los eventos se particionan por una clave (usuario por ejemplo) de modo que todos los eventos con una misma clave se rutean a la misma celda CEP.

En cada estado los eventos pueden particionarse por una clave diferente permitiendo agregación en varias dimensiones:

Con esta arquitectura para escalar a más eventos simplemente tengo que meter más celdas CEP.

Pulsar CEP usa Apache ZooKeeper para detectar nuevas celdas y rebalancear el tráfico, de la misma forma si una celda se cae Pulsar reenruta el tráfico a otros nodos…

Pulsar CEP soporta varios modelos de mensajería entre estados, pudiendo elegir modelo Push o Pull. Pulsar permite persistir los eventos en Kafka para garantizar el procesado.

Opinión:

Pulsar CEP resulta una solución muy interesante en el ámbito “Real Time Big Data”, se me ocurren diversos escenarios de uso:

· los que hayáis usado Storm habréis echado en falta un lenguaje estilo SQL para procesar los streams (algunos hasta hemos integrado un CEP con Storm)

· los que necesitéis un CEP con licencia Apache (y no GPL como Esper) hasta ahora teníais poca elección: Siddhi CEP