Este es un sistema distribuido de elección de líder basado en ZooKeeper. El sistema permite la creación de nodos que compiten por el liderazgo y realizan operaciones basadas en su estado de liderazgo.
- Python 3.x
- Biblioteca Kazoo
- Docker
-
Clona este repositorio en tu máquina local:
git clone https://github.com/WGand/Practica3_SistemasDistribuidos
-
Creación de la red e inicio de Zookeper:
docker network create zoo-net docker run --rm -d --name zookeeper-server --network zoo-net --network-alias -p 2181:2181 zookeeper zookeeper:3.8.1
-
Ejecución del script "electionLeaderWithCounter.py":
python3 electionLeaderWithCounter.py -H <ZooKeeper_host> -p <ZooKeeper_port> <account_id>
Valores:
-
<ZooKeeper_host>: La dirección IP o nombre de host del servidor de ZooKeeper.
-
<ZooKeeper_port>: El puerto del servidor de ZooKeeper.
-
<account_id>: El ID de cuenta del nodo.
-
El script creará un nodo y competirá por el liderazgo en el sistema distribuido.
-
Dependiendo de si el nodo se convierte en líder o no, realizará diferentes operaciones:
1. Si el nodo se convierte en líder, incrementará un contador y mostrará su valor. 2. Si el nodo no es líder, seguirá el contador y mostrará su valor. 3. Si el nodo líder deja de existir, un nodo designado será el nuevo líder. (Puede tardar algunos segundos mientras Zookeeper elimina el último nodo líder)
-
Puedes ejecutar múltiples instancias del script en diferentes terminales para simular varios nodos compitiendo por el liderazgo.