Quais são minhas opções para um banco de dados distribuído e orientado a linhas?

Quais são minhas opções para um banco de dados distribuído e orientado a linhas?

(Desculpe se este não é o fórum certo. StackOverflow também não parece certo. Achei que havia uma descrição na página inicial dizendo que tipo de perguntas eram relevantes, mas não consigo encontrá-la hoje.)

Tenho vários servidores que manipularão dados de um conjunto de clientes. Não sei antecipadamente quais clientes se conectarão a quais servidores e os clientes poderão se mover entre servidores. Preciso de uma maneira de os servidores compartilharem as informações mais recentes sobre um cliente.

Digamos que tenho clientes C1, C2, C3 e C4 e servidores S1 e S2. Os servidores inicializam e sabem que os clientes são C1..C4, mas não sabem nada sobre eles. C1 e C2 se conectam a S1 e S1 mantém algum estado sobre eles. Periodicamente, S1 compartilha o estado atual de C1 e C2 com S2. Em algum momento, C1 se desconecta de S1 e se conecta a S2. S2 tem um estado ligeiramente obsoleto para C1 e pode, na maioria das vezes, lidar com C1 sem qualquer interrupção.

Nesse ínterim, C3 e C4 se conectam a S2 e acontece praticamente a mesma coisa. S2 mantém o estado de C3 e C4 e informa periodicamente S1 sobre eles. Se C3 passar para S1, ele já terá um estado ligeiramente obsoleto.

Considerei o MQTT e fazer com que cada servidor publicasse o que sabe e assinasse o que deseja saber, mas o volume de dados que prevejo não se ajusta muito bem ao caso de uso do MQTT. (Pode haver 256 mil clientes ou mais. FWIW, os dados específicos do cliente têm aproximadamente 64 bytes.)

Redis veio à mente, mas não parece certo porque a replicação parece copiar toda a instância de um mestre para uma réplica e aqui tenho partes dos dados pertencentes (ou atualizados pela última vez) por cada servidor.

Se o Redis não for a ferramenta certa, quais são minhas opções?

TIA.

informação relacionada