https://taller-1-fiuba-rust.github.io/proyecto/24C2/proyecto.html
- Lorenzo Minervino: 107863
- Federico Camurri: 106359
- Alen Davies: 107084
- Luca Lazcano: 107044
Este trabajo práctico consiste en la implementación de un sistema de control de vuelos global. Para ello, se desarrolló una base de datos distribuida basada en el modelo de Cassandra, que permite el acceso concurrente para lectura y escritura por múltiples clientes distribuidos.
A continuación, se describen los pasos para compilar, ejecutar y probar el programa.
Para compilar y ejecutar el programa, existen las siguientes opciones:
-
Levantar 5 nodos automáticamente:
Ejecutarmake runen el directorionode_launcher. -
Levantar nodos individualmente:
Ejecutarcargo run {ip}en el directorionode_launcher. -
Crear tablas, keyspaces y cargar datos de prueba:
Ejecutarcargo runen el directoriodriver/examples. -
Cargar datos de vuelos y aeropuertos para la interfaz gráfica:
Ejecutarcargo run --example airportsen el directoriographical-interface. -
Ejecutar la interfaz gráfica:
Una vez cargados los datos en el clúster, ejecutarcargo runen el directoriographical-interface.
Para probar el programa:
- Probar módulos individuales: Ejecutar
cargo testdentro de cada módulo. - Probar todos los módulos a la vez: Ejecutar
cargo test --alldesde la raíz del proyecto.
-
Para levantar el clúster de nodos definido en
compose.yml, ejecutar:sudo docker compose --profile "*" up --build -
El driver utiliza la variable de entorno
NODE_ADDRpara conectarse al clúster. Por ejemplo:export NODE_ADDR="127.0.0.1:10000" && cargo run
Esto conecta la interfaz gráfica al clúster a través del puerto
10000mapeado al nodo correspondiente según lo definido encompose.yml. -
Ejemplos específicos de ejecución:
- Para la interfaz gráfica:
cd graphical-interface && export NODE_ADDR="127.0.0.1:10001" && cargo run
- Para el simulador de vuelos:
cd flight-sim && export NODE_ADDR="127.0.0.1:10002" && cargo run
- Para la interfaz gráfica:
- La IP del nodo semilla utilizado por un nodo puede configurarse mediante la variable de entorno
SEED. - Para agregar o quitar nodos, se deben ajustar las direcciones IP en
compose.yml.
-
Para levantar los nodos definidos en el perfil
initial-nodes, ejecutar:sudo docker compose --profile initial-nodes up
-
Para simular la unión de un nuevo nodo al clúster, ejecutar:
sudo docker compose --profile new-node up
-
Se pueden agregar más perfiles para simular la unión de más nodos.
Para detener y eliminar un nodo, ejecutar:
sudo docker stop nodeX && sudo docker rm nodeXReemplazar nodeX con el nombre del nodo a detener. Para identificar el nombre del nodo, consultar la sección container_name del servicio correspondiente en compose.yml.
Este sistema está diseñado para ofrecer una solución distribuida y escalable que permita la simulación y gestión de vuelos globales mediante nodos interconectados. Cada componente ha sido probado y configurado para garantizar un rendimiento óptimo.