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: