Frage

Predis behauptet, eine kundenseitige Sharding zu haben (Unterstützung für ein konsequentes Hashing von Schlüssel). http://github.com/nrk/prredis

Ich kann mit einer Verbindung zu einer Reihe von Profilen (Knoten) zusammenarbeiten, aber es ist nicht konsequentes Hashing. Wenn ich dem Pool einen weiteren Knoten füge, können einige der Schlüssel nicht gefunden werden. Hat jemand Erfahrung damit?

Verwenden Sie PHP 5.2 (und die PHP 5.2 -Version von Redis).

War es hilfreich?

Lösung

sieht aus wie ein Berechtigungsausgang mit dem Domain \ sn_spappprod-Konto.Hat es ein SQL-Login mit den erforderlichen Rechten?Wenn Sie über einen Multi-Server-Farm verfügen, haben Sie einen Alias auf jedem Server?

Ein schöner Trick, um zu sehen, ob Ihr Benutzer Zugriff hat, ist, ein Testdatei zu verwenden, siehe den unteren Bereich von Dieser Artikel , wie man das macht.Wenn dieser Test keine Fehler zurückgibt, ist Ihre Verbindung zum SQL-Server in Ordnung - Stellen Sie sicher, dass Sie den Aliasname Server2 verwenden, wenn Sie den Test ausgeführt werden.

Wenn der Test einen Fehler zurückgibt, ist Ihr Alias wahrscheinlich nicht korrekt auf dem Server konfiguriert.

Es könnte auch sein, dass Ihr Konto nicht die erforderlichen Berechtigungen zum Ausführen des Konfigurationsassistenten hat.Sektion in Dieser Artikel .

Andere Tipps

Die Lösung besteht darin, virtuelles Sharding zu verwenden. Ich weiß nicht, dass Predis Framework funktioniert, aber ich gehe davon aus, dass es eine Art Array verwendet. Sie füllen es wahrscheinlich mit Informationen über jede Shard beim Start.

Angenommen, Sie haben maximal 10 Scherben (diese Zahl sollte wahrscheinlich nicht erreicht werden). Erstellen Sie dann das Sharding -Array, das auf nur 3 echte Server verweist. Wenn Sie in Zukunft neue Knoten hinzufügen, werden Sie verwandte Daten auf neue Shard- und Ändern der Zuordnung migrieren. Dieser Ansatz bewahrt eine veränderte Hash -Funktion.

Erstzuordnung:

0 => 0 //node #0
1 => 0
2 => 0
3 => 1 //node #1
4 => 1
5 => 1
6 => 2 //node #2
7 => 2
8 => 2
9 => 2

Wenn Sie einen neuen Knoten hinzufügen, ändern Sie nur die Zuordnung:

0 => 0
1 => 0
2 => 3 // new node #3
3 => 1
4 => 1
5 => 3 // new node #3
7 => 2
8 => 2
9 => 3 // new node #3

Sie müssen also Daten mit H (x) = 9 oder 5 oder 2 auf Knoten Nr. 3 verschieben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top