2013-03-08 18 views
6

Horizontale Skalierung der Redis-Instanz, die als Task-Server für Python-RQ arbeitet.Horizontale Skalierung von Python-RQ oder Redis mit Python

Soweit ich weiß, ist der beste Weg, dies zu tun wäre, um sharding Logik hinzuzufügen in einem benutzerdefinierten ConnectionPool und/oder Connection Klasse (höchstwahrscheinlich Consistent Hashing verwenden). Ich würde lieber eine Bibliothek für den Consistent Hashing-Mechanismus verwenden - da es so aussieht, als müsste etwas verfügbar sein und ist wahrscheinlich besser/mehr im Kampf getestet als eine selbst entwickelte Lösung.

Was wäre ein gutes Muster, um so etwas zu tun? Gibt es eine Bibliothek, die ich untersuchen sollte? Gibt es etwas, das mir fehlt, das ich berücksichtigen sollte?

Vielen Dank!

Antwort

2

Ich denke, Sie sollten ein paar Dinge im Hinterkopf haben.

Zuerst ist, wo ist Ihr Engpass und warum sollten Sie eine Partition Architektur auf Ihrem Redis-Backend unter einem Python-Rq-Paradigma geben. Ich denke, dass Redis genug performance hat, um zu glauben, dass der Bootleneck in Ihrer Anzahl von Arbeitern und der Anzahl von Jobs sein sollte, die Sie zu einer bestimmten Zeit verarbeiten möchten.

Sie können sagen: Wie lange kann ich warten, bis dieser Job bearbeitet werden soll? Wenn Sie diesen Wert herausfinden können, Latenz. Sie haben den Schlüssel, um weitere Knoten in Ihre Architektur hinzuzufügen.

Wenn Sie nach einer Verbesserung Ihrer Infrastruktur mit einer Sharing-Lösung mit konsistentem Hashing suchen, müssen Sie die Probleme hinter den Rebalancing-Schlüsseln berücksichtigen, wenn ein neuer Knoten gelöscht oder hinzugefügt wurde.

Zum Beispiel könnte ein aktueller Worker mit einem falschen Redis-Server für einen bereits bestehenden Job verbunden sein, weil ein neuer Server hinzugefügt oder entfernt wurde, nachdem der neue Job gestartet wurde und bevor er beendet wurde.

+0

Ja, ich denke, das ist ein wichtiger Teil des Problems zu berücksichtigen. Ich denke jedoch nicht, dass es meine Frage beantwortet: Wie gestatte ich der Anwendung, horizontal mit RQ zu skalieren? Mit welcher Technik soll ich es machen? –

+0

Aber welche Ressource möchten Sie in Ihre Anwendung skalieren? – pfreixes