Servidor de Ragnarok Online en Elixir - Parte 3

Descubre una arquitectura distribuida para servidores de juego basada en BEAM, Mnesia y Memento que gestiona sesiones en el cluster con baja latencia y alta resiliencia.

30 ago 2025 • 5 min de lectura • Equipo Q2BSTUDIO

Inteligencia-Artificial-

En esta entrega explicamos la pieza secreta de la arquitectura distribuida para servidores de juego, centrada en la gestión de sesiones distribuidas que permite que un Servidor de Cuentas, un Servidor de Personajes y un Servidor de Zona sepan en todo momento quie´n es el jugador sin depender de sockets TCP aislados ni protocolos complejos entre servidores

El reto es simple y común en MMOs: el cliente autentica en el Servidor de Cuentas, luego se conecta al Servidor de Personajes y finalmente al Servidor de Zona; cada salto usa un socket distinto y no existe memoria compartida entre procesos del sistema operativo, asi que co´mo verifican los servidores que se trata del mismo usuario autenticado

Las aproximaciones tradicionales incluyen almacenar sesiones en una base de datos compartida, usar Redis o Memcached como cache distribuida, o construir un protocolo de intercomunicacio´n entre servidores como hacen muchos emuladores. Todas tienen inconvenientes: latencia de red, dependencia de componentes externos, complejidad operativa y mucha llo´rica de sincronizacio´n y reconexio´n

En lugar de eso aprovechamos la ventaja del BEAM, la ma´quina virtual de Erlang sobre la que corre Elixir. El BEAM fue disen~ado para sistemas distribuidos de alta concurrencia y tolerancia a fallos, y tiene herramientas nativas que convierten el problema en algo mucho ma´s simple y robusto

Idea clave: tratar cada servidor como un nodo del cluster BEAM y mantener el estado de sesiones dentro del propio runtime. Asi´ evitamos escribir protocolos de sincronizacio´n, simplificamos la operacio´n y reducimos la latencia a accesos en memoria

Mnesia es la base de datos distribuida que lleva Erlang. Se ejecuta dentro del BEAM y permite lecturas y escrituras en memoria con re´plica entre nodos. En vez de mil llamadas a una base externa, la lectura de una sesio´n puede ser una simple operacio´n en memoria y las escrituras se replican automa´ticamente entre nodos conectados

Para trabajar con Mnesia desde Elixir usamos Memento, un envoltorio que hace la experiencia mucho ma´s natural. Con Memento definimos tablas como structs y realizamos transacciones atomicas en todo el cluster, lo que evita estados parciales y condiciones de carrera

El descubrimiento de nodos es el siguiente problema: Mnesia replica datos cuando los nodos esta´n conectados, pero no descubre nodos por si´ solo. Para resolverlo usamos libcluster, que permite estrategias automa´ticas de descubrimiento en entornos como Kubernetes, AWS o Docker

Adema´s creamos un gestor de arranque y orquestacio´n llamado MementoCluster Manager que coordina la inicializacio´n de Mnesia, decide si un nodo debe crear el esquema o unirse a uno existente, y reintenta cuando los demas nodos todavi´a no esta´n listos. Asi´ el cluster se autoorganiza sin operaciones manuales

En cuanto a disen~o de datos, definimos tablas con poli´tica de almacenamiento diferenciada segun la criticidad y persistencia deseada: disc copies para datos persistentes como sesiones y registro de servidores, ram copies para listas en memoria de usuarios online y disc only copies cuando interesa ahorrar RAM

El esquema de sesio´n recoge todos los datos necesarios para validar al jugador y seguir su recorrido: identificadores aleatorios de login, co´digo de autenticacio´n, estado actual, servidor actual, id de personaje, timestamps de creacio´n y u´ltima actividad y el nombre de usuario. Gracias a Memento estas tablas son visibles localmente en cada nodo y se mantienen sincronizadas

El componente SessionManager proporciona una API limpia basada en GenServer para crear, validar y actualizar sesiones. Todas las operaciones sobre sesiones se ejecutan dentro de transacciones Memento, con atomicidad a nivel de cluster, lo que garantiza consistencia aun en presencia de fallos

Flujo de ejemplo: el Servidor de Cuentas genera tokens aleatorios al autenticar al usuario y llama a SessionManager.create_session para escribir la sesio´n en el cluster. El Servidor de Personajes valida los tokens llamando a SessionManager.validate_session y accede a la informacio´n desde su Mnesia local en microsegundos. No hay llamadas de red adicionales entre servidores para la validacio´n

El sistema registra tambie´n el estado y carga de cada servidor. Los Servidores de Personajes se registran en la tabla ServerStatus y SessionManager puede devolver una lista filtrada y balanceada de servidores disponibles, escogiendo el ma´s adecuado por conteo de jugadores y por cluster id para soportar mu´ltiples mundos

Para la operacio´n continua implementamos meca´nicas de mantenimiento y recuperacio´n automatizada: periodically cleanup que elimina sesiones inactivas pasado un umbral, heartbeats que actualizan last heartbeat y deteccio´n de nodos muertos. Cuando un nodo deja de enviar heartbeats se elimina su registro y se limpian datos hu´erfanos como sesiones y localizaciones de personajes

Gracias a estas capacidades la infraestructura es auto recuperable: si un Servidor de Personajes cae, en decenas de segundos los demas nodos detectan el fallo, limpian datos hu´erfanos, actualizan el registro y el balanceador deja de enrutar usuarios al nodo caido. Cuando el nodo vuelve a arrancar se vuelve a unir al cluster automaticamente

En resumen, la combinacio´n BEAM Mnesia Memento libcluster y una capa de Gestio´n de Sesiones nos permite ofrecer autenticacio´n multifase entre servidores sin dependencias externas, con latencias ultra bajas, replicacio´n automatica, tolerancia a fallos y visibilidad global del estado de jugadores

Q2BSTUDIO es la empresa detra´s de este enfoque. Somos especialistas en desarrollo de software a medida y aplicaciones a medida, con experiencia en inteligencia artificial, ia para empresas, agentes IA y soluciones de inteligencia de negocio. Tambie´n ofrecemos servicios de ciberseguridad y gestio´n de infraestructuras en la nube con servicios cloud aws y azure. Podemos ayudar a adaptar esta arquitectura a proyectos reales, desplegar clusters en Kubernetes, integrar power bi para visualizacio´n de telemetri´a y crear pipelines de datos para inteligencia de negocio

Si tu empresa necesita software a medida o aplicaciones a medida que incluyan componentes de inteligencia artificial, agentes IA, dashboards con power bi o una postura de ciberseguridad integrada, Q2BSTUDIO diseña, desarrolla e implementa soluciones llave en mano. Trabajamos tanto en la capa de arquitectura distribuida como en la integracio´n con servicios cloud aws y azure, garantizando escalabilidad y continuidad operativa

Palabras clave para buscadores y SEO aplicadas en este contenido: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi

En la pro´xima entrega abordaremos la transicio´n de personaje a zona, carga de mapas y optimizacio´n de representacio´n de mapas usando ETS para consultas extremadamente ra´pidas, y construiremos la lo´gica de juego en el Servidor de Zona. Si quieres que adaptemos esta arquitectura para tu proyecto ponte en contacto con Q2BSTUDIO y te asesoramos en diseno, seguridad y despliegue

Gracias por leer y bienvenido al mundo distribuido del BEAM para servidores de juego y aplicaciones críticas en produccio´n

¿UNA PAUSA?

Juega un momento antes de irte

NUESTROS SERVICIOS

Cómo podemos ayudarte

Inteligencia artificial

Agentes de IA, chatbots y asistentes inteligentes que automatizan tareas y atienden a tus clientes 24/7 para mejorar la eficiencia de tu negocio.

Más info

Desarrollo de software

Aplicaciones web, móviles y de escritorio, intranets, e-commerce, SaaS y plataformas de gestión diseñadas para las necesidades concretas de tu empresa.

Más info

Servicios cloud

Migración, infraestructura, hosting gestionado, alta disponibilidad y seguridad en Microsoft Azure y Amazon Web Services para que tu negocio escale sin límites.

Más info

Ciberseguridad y pentesting

Auditorías de seguridad, test de intrusión (pentesting) y protección de aplicaciones, datos e infraestructura on-premise y cloud, con hacking ético y cumplimiento normativo.

Más info

Business Intelligence

Cuadros de mando y análisis de datos con Power BI: integramos tus fuentes, diseñamos dashboards y KPIs y convertimos tus datos en decisiones.

Más info

Automatización de procesos

Automatizamos tareas repetitivas y conectamos tus aplicaciones con n8n, Power Automate, Make y RPA, eliminando trabajo manual y aumentando la productividad.

Más info

Formación para empresas

Formamos a tus equipos en tecnología con criterio: desarrollo web, bases de datos, Git, buenas prácticas y seguridad, automatización con n8n, inteligencia artificial para empresas y creación de soluciones de IA con Azure AI Foundry.

Más info

Auditoría de código

Auditamos el código que creas tú, tu equipo o una IA: te decimos qué está bien y qué mejorar, lo securizamos y lo dejamos listo para producción, web o app.

Más info

Generación de imágenes con IA

Creamos por ti las imágenes que necesita tu negocio con inteligencia artificial: producto, redes, publicidad, ilustración y avatares. Tú nos dices qué quieres y te lo entregamos listo para usar.

Más info

Generación de vídeos con IA

Creamos por ti vídeos con inteligencia artificial: promocionales, para redes, presentadores virtuales, doblaje y animaciones. Nos cuentas la idea y te lo entregamos montado y listo para publicar.

Más info

Avatares conversacionales con IA

Creamos avatares conversacionales con IA —humanos digitales con cara y voz— que atienden a tus clientes y equipos con el conocimiento de tu empresa, en tu web, monitores interactivos, WhatsApp o Teams.

Más info

Marketing Online e IA

Google Ads, Meta Ads, LinkedIn Ads y posicionamiento en motores de IA (GEO/AEO): captamos clientes y hacemos que tu marca aparezca donde te buscan, también en ChatGPT, Gemini y Perplexity.

Más info

¿Tienes un proyecto en mente?

Cuéntanos tu visión y la convertimos en una solución de software. Sea cual sea el alcance, hacemos realidad tu idea.

Live Chat