2012-04-10 4 views
2

Wenn Fetchinig Mehrere Keysets ich, dass Client die Anforderung in einer sehen kann lange Zeichenfolge macht und sendet an den angeschlossenen Couchbase Server (das Protokoll scheint auch die vbucket Karte von jedem Schlüssel enthält)Schlüsselsatz holen?

So ein Netzwerk Anruf vom Client mit allen Schlüsseln, ihren vbucketmaps.

Wie reagiert der Server auf diese Anfrage?

Wenn der verbundene Server alle angeforderten Werte hat, erwarte ich, dass der verbundene Server nur die angeforderten Werte angibt.

Wenn jedoch mehrere Cluster vorhanden sind, besteht die Möglichkeit, dass der verbundene Server möglicherweise nicht über den angeforderten Schlüssel verfügt. Was macht der Server in dieser Situation? Ich kann sehen, dass die Anfrage die vbucket-Map enthält, von dieser kann ich erwarten, dass der verbundene Server den Master-Server des bestimmten Schlüssels nach seinen Werten fragen könnte. Das ist nur meine Vermutung, ich würde gerne wissen, wie Server in dieser Situation reagieren.

Auch was passiert, wenn Schlüssel existiert, aber der Server den Wert wegen "Server beschäftigt" oder eines anderen Fehlers nicht zurückgibt.

immer mit Ihrer Hilfe

Antwort

3
geschätzt

Es gibt zwei verschiedene Möglichkeiten, entweder mit oder ohne moxi moxi passieren kann.

Ohne Moxi (Smart Client)

Der der Client stellt eine Verbindung mit Couchbase wird es zunächst eine Liste aller Server in dem Cluster und der vbucket Karte bekommen. Es stellt dann eine Verbindung zu jedem Server im Cluster her. Wenn Sie eine Multi-Operation durchführen, wird der Client die vbucket-Map, die er enthält, konsultieren und herausfinden, zu welchem ​​vbucket der Server gehört. Wenn wir drei Server haben, stellt der Client bis zu drei Multi-Operationen zusammen und sendet diese an den entsprechenden Server, der alle Schlüssel in dieser Multi-Operation enthält. Jeder Server antwortet auf den Client, und der Client fügt alle Ergebnisse in einer Reihe von Ergebnissen zusammen.

Mit Moxi

In diesem Fall ist der Kunde nicht über die Cluster oder der vbucket Karte nicht kennt, aber moxi tut. Der Client sendet alle Schlüssel an moxi und dann kümmert sich moxi darum, sie aufzuteilen und an die entsprechenden Server zu senden.

Sever Down-Szenario:

Wenn ein Server oder besetzt ist, alle Schlüssel in diesem Server spezifischen Mehr Operation fehlschlagen. Der Client sollte Ihnen die Schlüssel, die er von den anderen Servern erhalten konnte, zurückgeben und Sie auf den Fehler aufmerksam machen.

Rebalancing Szenario:

Während einer Neuverteilung gibt es eine kleine Chance, dass eine Anfrage an den falschen Server geschickt wird. In diesem Fall sollte der Client den Vorgang auf dem richtigen Server wiederholen. Während der Neuverteilung sollte jeder Client eine Schnellvorlauf-Vbucket-Map erhalten, die angibt, wo sich alle V-Buckets nach der Neuverteilung befinden. Es wird den Server in dieser vbucket-Map für den erneuten Versuch verwenden.

+0

Hmm Art von schwer zu verstehen atm ... Für den ersten Teil, wie ich von Ihrem Schreiben sehen kann, scheint es mehr als ein Netzwerk-Anruf kann von Client durchgeführt werden, auch Sie sagten "senden Sie jeweils an die entsprechenden Server, der alle Schlüssel in dieser Multioperation enthält "Was ist, wenn diese Art von Server nicht existiert? im zweiten Teil, Sie sagten "teilen sie und senden an den entsprechenden Server" bedeutet das Client verbindet sich mit mehreren Servern und senden entsprechende Anfragen? Im dritten Teil, wenn 3 Schlüssel und 1 fehlgeschlagen. Gibt die gesamte Anfrage einen Fehler zurück? würde gerne mehr im Detail wissen. Danke –

+0

Ich entschuldige mich für meine Antwort ein wenig verwirrend. Du beginnst, detailliertere Fragen zu stellen, also würde es helfen, wenn du mir sagen könntest, mit welchem ​​Client du dich mit Couchbase verbindest. So kann ich Ihre Fragen besser beantworten. – mikewied

+0

Mit dem Client meinen Sie die Sprache, die ich denke ... Ich habe noch nicht entschieden, welche Bibliothek ich benutzen soll, sondern über spionmcached (JAVA) und libcouchbase (C++). scheint, als ob beide ziemlich ähnlich sind. –