Saltar al contenido principal

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:

  1. Agregar servicio en docker-compose.yml
  2. Actualizar haproxy.cfg
  3. 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 activas
  • pasarela_messages_total - Mensajes procesados
  • Métricas de Node.js (CPU, memoria, event loop)

Monitoreo