Skip to content

Chat usando un modelo Gossip - Data Dissemination.

License

Notifications You must be signed in to change notification settings

ArielXL/chat-gossip

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Chat usando un modelo Gossip - Data Dissemination

Sobre el autor

Nombre y Apellidos Correo GitHub
Ariel Plasencia Díaz arielplasencia00@gmail.com @ArielXL

Sobre el chat

Es un ejemplo de chat simple basado en un modelo tipo Gossip - Data Dissemination, el cual, es un procedimiento o proceso de comunicación entre pares de nodos que se basa en la forma en que se propagan las epidemias. Algunos sistemas distribuidos utilizan dicho protocolo para garantizar que los datos se difundan a todos los miembros de un grupo.

Sobre la implementación

La implementación se encuentra totalmente en python 3. Es recomendable tener conocimientos avanzados de este lenguaje de programación para una mayor y mejor entendimiento de las implementaciones propuestas.

Sobre la ejecución

Para la ejecución, escriba las siguientes líneas en una terminal abierta en este directorio:

cd src/
python node_8000.py
python node_8001.py
python node_8002.py
python node_8003.py
python node_8004.py

Además, se pueden añadir nodos dinámicamente, haciendo:

cd src/
python add_node.py -o <ip> -p <port> -n <node_port> ... -n <node_port>

Sobre la red Gossip - Data Dissemination

Para un mejor entendimiento de la relación de los nodos conectados propuesta por esta implementación veremos la siguiente figura:

grafo

Podemos apreciar que el nodo conectado por el puerto 8000 posee a los puertos 8001 y 8002 como nodos susceptibles, mientras que el nodo conectado por el puerto 8002 tiene al puerto 8000 como único nodo amigo. Por otra parte, el nodo seleccionado con el puerto 8001 presenta como nodos susceptibles a los puertos 8000, 8003, 8004, sin embargo estos dos últimos solo poseen al nodo 8001 como único nodo susceptible.

Un ejemplo sencillo

A continuación, presentaremos un sencillo ejemplo que pone en evidencia la utilidad y eficiencia del algoritmo propuesto. Primeramente ejecutamos las siguientes líneas en una terminal abierta desde esta misma dirección:

cd src/
python node_8000.py
python node_8001.py
python node_8002.py
python node_8003.py
python node_8004.py

Si escribimos un mensaje desde el nodo con el puerto 8003, dicho mensaje le llegará a todos los nodos en nuestra pequeña red. Si nos fijamos en la figura anterior vemos que todos los nodos son alcanzables a partir del representado por el puerto 8003.

node_8000

node_8001

About

Chat usando un modelo Gossip - Data Dissemination.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages