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

Redis/Jedis sem ponto único de falha e failover automatizado


Você pode tentar o Redis Sentinel para conseguir isso:

O Redis Sentinel é um sistema projetado para ajudar a gerenciar instâncias do Redis. Ele executa as três tarefas a seguir:

  • Monitoramento . O Sentinel verifica constantemente se suas instâncias master e slave estão funcionando conforme o esperado.

  • Notificação . O Sentinel pode notificar o administrador do sistema, ou outro programa de computador, por meio de uma API, que algo está errado com uma das instâncias do Redis monitoradas.

  • Failover automático . Se um mestre não estiver funcionando conforme o esperado, o Sentinel pode iniciar um processo de failover em que um escravo é promovido a mestre, os outros escravos adicionais são reconfigurados para usar o novo mestre e os aplicativos que usam o servidor Redis informados sobre o novo endereço a ser usado na conexão.

... ou para usar uma solução externa como Zookeeper e Jedis_failover:
JedisPool pool = new JedisPoolBuilder()
    .withFailoverConfiguration(
        "localhost:2838", // ZooKeeper cluster URL
        Arrays.asList( // List of redis servers
            new HostConfiguration("localhost", 7000), 
            new HostConfiguration("localhost", 7001))) 
    .build();

pool.withJedis(new JedisFunction() {
    @Override
    public void execute(final JedisActions jedis) throws Exception {
        jedis.ping();
    }
});

Veja esta apresentação do Zookeeper + Redis.

[Atualizar] ... ou uma solução Java pura com Jedis + Sentinel é usar um wrapper que manipula eventos Redis Sentinel, consulte SentinelBasedJedisPoolWrapper.