2016-04-26 7 views
0

Kann ich twemproxy als Load Balancer für einen Pool von Redis-Instanzen verwenden, je nach Größe der Redis-Warteschlange (Anzahl der Schlüssel pro Instanz)? Ist Twemproxy in der Lage, sich von der Upstream-Instanz der Redis-Instanzen abzuschalten, wenn es eine vorkonfigurierte maximale Anzahl von Schlüsseln in seiner Datenbank erreicht?Kann ich twemproxy für den Lastausgleich verwenden, indem ich die Größe der Warteschlange redisere?

Wenn ja, wie kann ich das tun (ich bin sehr neu zu redis und so, so dass ich möglicherweise nur nicht aus der Dokumentation)?

Vielen Dank im Voraus.

Antwort

1

Nein, es ist nicht möglich, die exakte Anzahl von Schlüsseln oder die Warteschlangengröße pro Instanz zu laden. Das Sharding basiert auf Berechnungen basierend auf dem Schlüsselnamen. (siehe hash, hash_tag und distribution Einstellungen) Normalerweise sollten Sie eine ziemlich gleichmäßige Verteilung erhalten, aber mit etwas Pech könnten einige Shards viel mehr Schlüssel bekommen als andere.

+0

Vielen Dank, Kumpel, ich habe Ihren Standpunkt verstanden. In meinem Fall gibt es eine Java-App, die jede Redis-Instanz bedient, Warteschlangen-Daten herauszieht, und wenn sie fällt, wird die Warteschlange ziemlich schnell überfüllt, und Redis würde durch RAM-Mangel fallen und meine Daten verlieren ... Also, es ist hübsch Wichtig für mich ist der Balancer genau so zu arbeiten, wie ich beschrieben habe ((Haben Sie irgendwelche Vorschläge, wie kann ich das zum Laufen bringen?) –

+0

Ich bin mir nicht sicher, wie ich die Anzahl der Keys in der Warteschlange eingrenzen soll Wenn ich Sie richtig verstehe, verwenden Sie redis, um eine Art von Jobs zu speichern, die von Ihrer Java-Anwendung verarbeitet werden. Nehmen wir an, Sie haben eine Option, die Warteschlangengröße pro Instanz zu begrenzen. Wenn Sie zwei Instanzen hinter dem Proxy haben, und man erreicht das definierte Limit, der Proxy wird die Weiterleitung an die andere Instanz starten, dann würde dieser bald das definierte Limit erreichen.Wie ist das besser/anders als die Verteilung der Schlüssel mehr oder weniger gleichmäßig über beide Instanzen? – udondan

+0

Der Schlüssel zum Datenverlust ist Redundanz (Replik ation) und redis mit Persistenz laufen (Daten auf Platte schreiben). Wenn Ihre Hosts nicht mehr genügend Arbeitsspeicher haben, könnte [virtueller Speicher] (http://redis.io/topics/virtual-memory) für Sie interessant sein. (obwohl veraltet) – udondan