Redis
 sql >> Database >  >> NoSQL >> Redis

Redis/Jedis non ha un singolo punto di errore e failover automatizzato

Potresti provare Redis Sentinel per raggiungere questo obiettivo:

Redis Sentinel è un sistema progettato per aiutare a gestire le istanze Redis. Svolge le seguenti tre attività:

  • Monitoraggio . Sentinel controlla costantemente se le tue istanze master e slave funzionano come previsto.

  • Notifica . Sentinel può notificare all'amministratore di sistema o a un altro programma per computer, tramite un'API, che qualcosa non va in una delle istanze Redis monitorate.

  • Failover automatico . Se un master non funziona come previsto, Sentinel può avviare un processo di failover in cui uno slave viene promosso a master, gli altri slave aggiuntivi vengono riconfigurati per utilizzare il nuovo master e le applicazioni che utilizzano il server Redis vengono informate del nuovo indirizzo da utilizzare durante la connessione.

... o per utilizzare una soluzione esterna come 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();
    }
});

Guarda questa presentazione di Zookeeper + Redis.

[Aggiorna] ... o una soluzione Java pura con Jedis + Sentinel consiste nell'usare un wrapper che gestisce gli eventi Redis Sentinel, vedere SentinelBasedJedisPoolWrapper.