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 read • Q2BSTUDIO Team

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

A BREAK?

Play for a moment before you go

OUR SERVICES

How we can help you

Artificial intelligence

AI agents, chatbots, and intelligent assistants that automate tasks and serve your customers 24/7 to improve the efficiency of your business.

More info

Software Development

Web, mobile, and desktop applications, intranets, e-commerce, SaaS, and management platforms designed for your company's specific needs.

More info

Cloud services

Migration, infrastructure, managed hosting, high availability, and security on Microsoft Azure and Amazon Web Services to help your business scale without limits.

More info

Cybersecurity and pentesting

Security audits, penetration testing and protection of applications, data and infrastructure on-premise and cloud, with ethical hacking and regulatory compliance.

More info

Business Intelligence

Dashboards and data analysis with Power BI: we integrate your sources, design dashboards and KPIs and turn your data into decisions.

More info

Process automation

We automate repetitive tasks and connect your applications with n8n, Power Automate, Make, and RPA, eliminating manual work and increasing productivity.

More info

Training for Companies

We train your teams in technology with criteria: web development, databases, Git, best practices and security, automation with n8n, artificial intelligence for companies and creation of AI solutions with Azure AI Foundry.

More info

Code Auditing

We audit the code that you, your team or an AI create: we tell you what is good and what to improve, we secure it and make it ready for production, web or app.

More info

AI Image Generation

We create for you the images that your business needs with artificial intelligence: product, networks, advertising, illustration and avatars. You tell us what you want and we deliver it ready to use.

More info

AI Video Generation

We create videos with artificial intelligence for you: promotional, networking, virtual presenters, dubbing and animations. You tell us the idea and we will deliver it assembled and ready to publish.

More info

AI Conversational Avatars

We create conversational avatars with AI – digital humans with a face and voice – that serve your customers and teams with the knowledge of your company, on your website, interactive monitors, WhatsApp or Teams.

More info

Online Marketing and AI

Google Ads, Meta Ads, LinkedIn Ads and AI Engine Positioning (GEO/AEO): we attract customers and make your brand appear where they search for you, also on ChatGPT, Gemini and Perplexity.

More info

Do you have a project in mind?

Tell us your vision and we'll turn it into a software solution. Whatever the scope, we make your idea real.

Live Chat