2016-05-30 17 views
5

Unser aktuelles Redis-Setup ist ein Webanwendungs-Client, der Jedis verwendet, um direkt eine JedisPool für Schreibvorgänge mit einem einzelnen Redis-Master und eine zweite JedisPool für Lesevorgänge von einem einzelnen Redis-Slave zu verbinden. Der Slave ist so eingerichtet, dass er den Master repliziert.Redis Sentinel mit Lesen von Slaves Schreiben an Master

Wir sind gerade dabei, den JedisSentinelPool auf dem Client zu verwenden und Sentinel (s) einzuführen, um den Failover sauberer zu handhaben. Soweit ich weiß, scheint der JedisSentinelPool nur mit dem aktuell gewählten Master zu kommunizieren, so dass nun alle Schreib/Lesevorgänge zum Master gehen. Im Vergleich zu früher konnten die Lesevorgänge an den Slave verteilt werden.

Gibt es eine Möglichkeit, JedisSentinelPool zu verwenden, um die Lesevorgänge zum Lastenausgleich an den Slave zu verteilen? Oder es ist notwendig, dies manuell mit einem JedisPool zu implementieren (wie vorher) In diesem Fall würde der JedisSentinelPool auf den alten Slave (neuer Master) zeigen und der JedisPool würde immer noch dumpf auf den alten Slave zeigen und effektiv der alte Slave (neuer Master) würde jetzt lesen und schreiben?

Verfügt der Redis Sentinel (oder anders) über Funktionen zum Lastenausgleich (im Gegensatz zu Failover)? Wir haben derzeit nur einen Slave, könnten weitere Slaves zum Load-Balancing verwendet werden? Und wenn ja, was sind die empfohlenen Konfigurationen?

Jeder Rat, reale Erfahrung hier würde geschätzt werden.

Antwort

0

Ich schreibe einen neuen JedisSentinelPool, von Slave mit Lastausgleich lesen kann, von Master schreiben, sie verwenden die redis die Sklaven zu abonnieren, ich es in meiner Web-Anwendung zu verwenden, siehe Code github sentinel-slave-jedis-pool