Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Replicação ativa-ativa do Redis


O Redis v2.8.3 não oferece suporte a configurações de vários mestres. A verdadeira questão, no entanto, é por que você quer configurar um? Em outras palavras, qual desafio/problema você está tentando resolver?

Parece que o desafio que você está tentando resolver é como reduzir a carga da rede (mais sobre isso abaixo) eliminando leituras pela rede. Como o Redis não é multimestre (ainda), a única maneira de fazer isso é configurando cada servidor de aplicativo com um mestre e um escravo (para o outro mestre) - ou seja, total geral de 4 instâncias do Redis (e duas vezes a RAM).

O cenário simples é quando cada aplicativo atualiza apenas um subconjunto mutuamente exclusivo de chaves do banco de dados. Nesse cenário, esse tipo de configuração pode realmente ser benéfico (pelo menos no curto prazo). Se, no entanto, ambos os aplicativos puderem tocar em todas as teclas ou se apenas uma chave for "compartilhada" para gravações entre os aplicativos, você precisará criar lógica de bloqueio/resolução de conflitos/etc... em seus aplicativos para consolidar o mestre local e diferenças de escravos (e isso pode ser um pouco exagerado). Em ambos os casos, no entanto, você acabará com muitos (ou seja, mais de 1) Redises, o que significa, no mínimo, mais esforço do administrador.

Observe também que, ao colocar o aplicativo e o banco de dados no mesmo servidor, você está se configurando para uma falha de escalabilidade quase certa. O que acontecerá quando você precisar de mais recursos de computação para seus aplicativos ou Redis? Como você adicionará outro servidor de aplicativos à mistura?

O que me traz de volta ao problema real que você está tentando resolver - carga de rede. Por que exatamente isso é um problema? Seus aplicativos são tão pesados ​​ou a rede é tão fina que você está disposto a ir tão longe? Ou talvez a latência seja o problema que você deseja resolver? Seja como for, recomendo que você considere um design comprovado pelo tempo, ou seja, separar o Redis dos aplicativos e colocá-lo em seus próprios recursos. É verdade que a rede vai bater na sua cara e você terá que contornar/com ela (que é o que todo mundo faz). Por outro lado, você terá mais flexibilidade e controle sobre sua configuração muito mais simples e isso, no meu livro, é um ganho enorme.