Buen ejemplo de aplicación de Real Time con tecnologías Big Data para la ingesta de información de redes sociales, que luego podrá ser procesada, aplicar 'sentiment analysis', cruzar con información en un Data Lake, etc...
Acceder Dashboard
Arquitectura:
El usuario o API envía palabras de filtro mediante una conexión WebSocket; en el servidor se crea una conexión con el cliente (API o usuario) obtenida a través del componente "Stream Holder", cuya función es gestionar la conexiones solicitadas.
El "Stream Holder" solicita una credencial al "Credentials Pool", con la cual se se abre una conexión con el API público de Twitter y envía una consulta especificando los filtros, el resultado son tweets en tiempo real recibidos a través del "Message Receiver".
El "Stream Holder" solicita una credencial al "Credentials Pool", con la cual se se abre una conexión con el API público de Twitter y envía una consulta especificando los filtros, el resultado son tweets en tiempo real recibidos a través del "Message Receiver".
El "Message Receiver" es un sujeto dentro del patrón observer: cuando la conexión a Twitter recibe un tweet, lo notifica al "Message Receiver" y este, para no bloquear el hilo que lo invoca, usa una Cola de Mensajes para comunicarse con el "Server Socket", es decir, pone los mensajes en la cola y el "Server Socket" los recoge de allí.
Este proceso optimiza el tiempo de bloqueo en O(1), que es la Complejidad Computacional de insertar en una cola.
Esta solución es extensible a un número mucho mayor de nodos, en complemento con un cluster kafka como se muestra en nuestra demo con kafka.
Verlo en funcionamiento: