Sistema distribuido para calcular velocidades promedio por arcos en las rutas del SITM-MIO usando ZeroC-ICE.
El sistema utiliza una arquitectura Master-Worker con ZeroC-ICE para:
- Procesar datagramas históricos de forma distribuida
- Calcular velocidades promedio por arco
- Soportar procesamiento en tiempo real (streaming)
- Coordinator (swarch@x104m01): Coordina workers y gestiona el grafo
- Workers (swarch@x104m02 a swarch@x104m31): Procesan particiones de datos
Coordinator: Coordinación y distribución de tareasGraphService: Gestión del grafo de rutas y arcosDataProcessor: Procesamiento de datagramasStreamProcessor: Procesamiento en tiempo real
- Java 11+
- ZeroC Ice 3.7+
- PostgreSQL 14+ (opcional)
- Redis 7+ (opcional)
- ZeroTier VPN configurada
- Instalar ZeroC Ice: https://zeroc.com/downloads/ice
- Generar código Ice desde slice files:
./src/main/scripts/generate_ice_code.sh
- Compilar proyecto:
./gradlew build
./gradlew run --args="Main"
# O directamente:
java -cp build/libs/averageSpeedSITM-MIO.jar Main# Opción 1: Usando Gradle
./gradlew run
# Opción 2: Usando JAR
java -cp build/libs/averageSpeedSITM-MIO.jar coordinator.CoordinatorNode
# Opción 3: Con puerto personalizado
java -Dcoordinator.port=10002 -cp build/libs/averageSpeedSITM-MIO.jar coordinator.CoordinatorNodejava -cp build/libs/averageSpeedSITM-MIO.jar worker.WorkerNode worker1 "tcp -h localhost -p 10000"./src/main/scripts/test_local.sh./src/main/scripts/deploy_coordinator.sh# Todos los workers
./src/main/scripts/deploy_all_workers.sh
# Worker individual
./src/main/scripts/deploy_worker.sh worker1 swarch@x104m02 "tcp -h x104m01 -p 10000"./src/main/scripts/validate_deployment.sh./src/main/scripts/performance_test.sh proyecto-mio/MIO/datagrams4history.csv 4src/main/
├── slice/ # Definiciones de interfaces Ice (.ice)
├── java/ # Código Java
│ ├── coordinator/ # Nodo coordinador
│ ├── worker/ # Nodos workers
│ ├── services/ # Implementaciones de servicios Ice
│ ├── model/ # Modelos de datos
│ ├── parser/ # Parsers de CSV
│ ├── calculator/ # Cálculo de velocidades
│ └── persistence/ # Acceso a base de datos
├── resources/
│ ├── icegrid/ # Configuración IceGrid
│ └── sql/ # Esquemas de base de datos
└── scripts/ # Scripts de deployment y testing
- Master-Worker: Distribución de trabajo
- Data Partitioning: División de datos
- Map-Reduce: Procesamiento y agregación
- Caching: Cache de resultados
- Load Balancing: Balanceo de carga
Proyecto académico - Universidad Icesi