¿Cuáles son mis opciones para una base de datos distribuida orientada a filas?

¿Cuáles son mis opciones para una base de datos distribuida orientada a filas?

(Lo siento si este no es el foro correcto. StackOverflow tampoco parece correcto. Pensé que solía haber una descripción en la página de inicio que decía qué tipo de preguntas eran relevantes, pero hoy no puedo encontrarla).

Tengo varios servidores que manejarán datos para un conjunto de clientes. No sé de antemano qué clientes se conectarán a qué servidores y los clientes pueden moverse entre servidores. Necesito una forma para que los servidores compartan la información más reciente sobre un cliente.

Digamos que tengo clientes C1, C2, C3 y C4 y servidores S1 y S2. Los servidores se inician y saben que los clientes son C1...C4 pero no saben nada sobre ellos. C1 y C2 se conectan a S1 y S1 mantiene algún estado sobre ellos. Periódicamente, S1 comparte el estado actual de C1 y C2 con S2. En algún momento, C1 se desconecta de S1 y se conecta a S2. S2 tiene un estado ligeramente obsoleto para C1 y en su mayoría puede retomar el manejo de C1 sin ninguna interrupción.

Mientras tanto, C3 y C4 se conectan a S2 y sucede prácticamente lo mismo. S2 mantiene el estado de C3 y C4 y periódicamente informa a S1 sobre ellos. Si C3 pasa a S1, ya tiene un estado ligeramente obsoleto.

Consideré MQTT y hacer que cada servidor publique lo que sabe y se suscriba a lo que quiera saber, pero el volumen de datos que anticipo no se ajusta muy bien al caso de uso de MQTT. (Puede haber 256.000 clientes o más. FWIW, los datos específicos del cliente son ~64 bytes).

Me vino a la mente Redis, pero no parece del todo correcto porque la replicación parece copiar la instancia completa de un maestro a una réplica y aquí tengo partes de los datos que pertenecen a cada servidor (o que fueron actualizados por última vez).

Si Redis no es la herramienta adecuada, ¿cuáles son mis opciones?

TIA.

información relacionada