Arquitectura
Visión General
Pasarela v2.0 está diseñada para alta disponibilidad y escalabilidad horizontal.
┌─────────────────┐
│ Clientes │
│ (Web, Mobile, │
│ IoT, etc.) │
└────────┬────────┘
│
┌────────▼────────┐
│ HAProxy │
│ Puerto 5000 │
└────────┬────────┘
│
┌────────────────────┼────────────────────┐
│ │ │
┌───────▼───────┐ ┌───────▼───────┐ ┌───────▼───────┐
│ Pasarela #1 │ │ Pasarela #2 │ │ Pasarela #N │
│ (Node.js) │ │ (Node.js) │ │ (Node.js) │
└───────┬───────┘ └───────┬───────┘ └───────┬───────┘
│ │ │
└───────────────────┼───────────────────┘
│
┌────────────┴────────────┐
│ │
┌──────▼──────┐ ┌──────▼──────┐
│ Redis │ │ Kafka │
│ (Adapter) │ │ (Eventos) │
└─────────────┘ └─────────────┘
Componentes
HAProxy (Balanceador)
- Distribuye tráfico entre instancias
- Sticky sessions por IP para WebSockets
- Health checks automáticos
- Puerto: 5000
Pasarela (Gateway)
- Servidor Node.js con Socket.io
- Stateless (estado en Redis)
- Métricas Prometheus
- Puerto interno: 5000
Redis
- Adapter de Socket.io para sincronización
- Almacenamiento de sesiones
- Pub/Sub entre instancias
- Puerto: 6379
Kafka (Opcional)
- Eventos asíncronos
- Persistencia de mensajes
- Integración con otros sistemas
- Puerto: 9094
Escalabilidad
Horizontal
Añadir más instancias de Pasarela:
- Agregar servicio en
docker-compose.yml - Actualizar
haproxy.cfg - Reiniciar
Vertical
Aumentar recursos de cada instancia según necesidad.
Alta Disponibilidad
- Múltiples instancias detrás de HAProxy
- Redis Adapter sincroniza mensajes
- Reconexión automática de clientes
- Health checks continuos
Métricas
Disponibles en /metrics (formato Prometheus):
pasarela_connections_total- Conexiones activaspasarela_messages_total- Mensajes procesados- Métricas de Node.js (CPU, memoria, event loop)
Monitoreo
- Grafana: Dashboards en http://localhost:3000
- Prometheus: Métricas en http://localhost:9090
- Kafka UI: Eventos en http://localhost:8080
- Redis Commander: Cache en http://localhost:8081