
Estou trabalhando em um projeto que possui muitos dispositivos clientes distribuídos em ambientes remotos onde as perdas de conectividade são frequentes e esperadas. Os clientes continuam operando offline, mas quando esses dispositivos estão acessíveis, eles recebem comandos de um conjunto de servidores na nuvem e comunicam o status a esses mesmos servidores.
Os dispositivos clientes e os servidores mantêm informações sobre o “saldo da conta” e essas informações são mutáveis em ambas as extremidades. Ou seja, os saldos das contas podem ser alterados pelos usuários da interface da nuvem ou da interface do cliente local, e essas alterações podem ser feitas mesmo quando o cliente está offline.
Entendo que esta é uma configuração de banco de dados "multimestre", em certo sentido. Estou me perguntando quais projetos existem para ajudar a gerenciar esse tipo de topologia. Existem exemplos de projetos semelhantes por aí? Ou existem outras arquiteturas que valem a pena considerar?
Responder1
O Tungsten pode ser configurado em uma arquitetura multimestre assíncrona, que é essencialmente o que você procura, e pode ser usado com vários bancos de dados:https://code.google.com/p/tungsten-replicator/
O aplicativo pode ser configurado para usar um back-end MySQL local utilizando Tungsten e sincronizar com os outros servidores sempre que estiver online. Quando off-line, as atualizações ficariam na fila até ficarem on-line novamente. Os clientes gostariam de estar conectados via VPN ou similar (por exemplo, túnel HTTPS/SSH).