Un clúster que se coordina a sí mismo
Nodus es un núcleo de clustering y mensajería que incorporas en tu proceso. Cada miembro ejecuta las mismas capas sobre un transporte compartido — de modo que la membresía, el liderazgo y la mensajería emergen de los propios nodos, sin un coordinador externo que operar.
Pares, no un coordinador
Cada miembro mantiene una conexión persistente con todos los pares y ejecuta las mismas cuatro capas. No hay un nodo privilegiado del que dependan los demás — el líder es simplemente el miembro que todos eligen.
Cuatro capas, una sola dependencia
Las partes difíciles de ejecutar más de una instancia — resueltas una vez e incorporadas, para que escribas código de aplicación, no la fontanería de los sistemas distribuidos.
Transporte
Una conexión de larga duración con cada par transporta todos los planos — membresía, mensajería, eventos y salud — con un carril prioritario para que el tráfico de control nunca quede desplazado por las cargas masivas.
Membresía
Los nodos se admiten entre sí a partir de un conjunto de pares y mantienen una lista de miembros en vivo. Las altas y bajas se exponen como eventos; un resumen de gossip viaja sobre el tráfico existente para reconciliar las vistas sin un servicio de registro.
Coordinación
Cada miembro ejecuta la misma elección sobre los mismos pares alcanzables y elige de forma independiente al mismo líder — sustentada en un contador de época, de modo que un líder obsoleto siempre se distingue del actual.
Mensajería
Envía una carga tipada a un par o a todos ellos, espera una respuesta tipada emparejada por correlation id, o publica en un bus de eventos de todo el clúster — todo sobre el mismo transporte.
Sin coordinador externo, por diseño
- Sin ZooKeeper, etcd ni ConsulLa coordinación vive dentro de tu proceso como una biblioteca. No hay un servicio de quórum externo que levantar, proteger, actualizar o mantener con vida — un sistema distribuido menos que operar.
- Cada nodo ejecuta la misma lógicaNo hay un proceso coordinador especial. Cada miembro calcula la membresía y el liderazgo a partir de las mismas entradas, de modo que el clúster sigue funcionando mientras los miembros puedan comunicarse entre sí.
- Se forma y se repara soloLos nodos descubren pares, acuerdan un líder y vuelven a converger tras altas, bajas y fallos por sí mismos — el clúster es una propiedad emergente de los miembros, no un servicio del que dependen.
Liderazgo sustentado en una época
Cada resultado de elección se sella con una época que aumenta de forma monótona. Cuando un nodo se une o el líder falla, los supervivientes vuelven a elegir y la época avanza — de modo que un mensaje o reclamo de un líder obsoleto siempre puede distinguirse del actual, y la conmutación por error nunca deja a dos nodos creyendo cada uno que lidera.
- Estrategia determinista — mayor id o nodo más antiguo — sobre los mismos pares alcanzables
- Un criterio de desempate resuelve las colisiones de igual época en exactamente un líder
- La época se incrementa en cada cambio, de modo que el liderazgo siempre es ordenable
Míralo funcionar en tu propio servicio
Incorpora Nodus, únete a un clúster y sigue al líder en unas pocas líneas — luego lee cómo la membresía y la detección de fallos lo mantienen honesto.