Wird memcached auf Servern in der Google App Engine geteilt?

8

Auf der memcached-Website heißt es, dass memcached ein verteilter Speichercache ist. Es bedeutet, dass es über mehrere Server hinweg laufen und eine gewisse Konsistenz beibehalten kann. Wenn ich eine Anfrage in der Google App Engine erstelle, besteht eine hohe Wahrscheinlichkeit, dass die Anfrage in derselben Entitätsgruppe vom selben Server bedient wird.

Meine Frage ist, sagen wir, es gab zwei Server, die meine Anfrage bearbeiten, ist die Ansicht von memcached von diesen beiden Servern gleich? Das heißt, tun Dinge, die ich auf einem Server memcached, die in der memcached-Instanz für den anderen Server widergespiegelt werden, oder sind das zwei völlig getrennte Memcached-Instanzen (eine für jeden Server)?

Insbesondere möchte ich, dass jeder Server seine eigene Instanz von memcached ausführt (keine Replikation in anderen memcached-Instanzen). Wenn diese beiden memcached Instanzen sich gegenseitig über Änderungen aktualisieren, die an ihnen vorgenommen werden, gibt es eine Möglichkeit, das zu deaktivieren?

Ich entschuldige mich, wenn diese Fragen dumm sind, als ich gerade angefangen habe darüber zu lesen, aber das sind erste Fragen, denen ich begegnet bin. Danke.

    
Stephen Cagle 09.08.2009, 21:23
quelle

4 Antworten

12

App Engine verwendet nicht wirklich Memcached, sondern eher eine API-kompatible Reimplementierung (hauptsächlich vom selben Typ , ich glaube - in seiner "20% -Zeit" ;-).

Zwischengespeicherte Werte können jederzeit verschwinden (über expliziten Ablauf, einen Absturz auf einem Server oder aufgrund von Speicherknappheit, in welchem ​​Fall sie in der zuletzt verwendeten Reihenfolge gelöscht werden, usw.), aber falls nicht verschwinden sie sind konsistent, wenn sie von verschiedenen Servern angezeigt werden.

    
Alex Martelli 09.08.2009, 21:50
quelle
4

Der gewählte memcached-Server hängt nicht von der Entitätsgruppe ab, die Sie verwenden (die Entitätsgruppe ist ein Konzept aus dem Datenspeicher, ein anderes Biest).

Jeder Server führt eine eigene Instanz von memcached aus, und jeder Server speichert einen Prozentsatz der Objekte, die Sie in Memcache speichern. Die Funktionsweise ist, dass wenn Sie die Memcached-API verwenden, um etwas unter einem bestimmten Schlüssel zu speichern, ein Memcached-Server ausgewählt wird (basierend auf dem Schlüssel).

Es gibt keine Replikation zwischen Memcached-Instanzen. Wenn eines dieser Kästchen ausfällt, verlieren Sie 1 / N Ihrer Memcached-Daten (N ist die Anzahl der in AppEngine ausgeführten Memcached-Instanzen).

    
Joaquin Cuenca Abela 09.08.2009 21:47
quelle
2

Normalerweise teilt Memcached keine Daten zwischen Servern. Der Anwendungsserver führt den Schlüssel zur Auswahl eines Memcached-Servers aus und kommuniziert dann mit diesem Server, um die Daten abzurufen oder festzulegen.

    
Ned Batchelder 09.08.2009 21:40
quelle
0

Basierend auf dem, was ich weiß, gibt es nur eine Instanz von Memcache von Ihrer gesamten Anwendung, es könnte viele Instanzen Ihres Codes geben, die jeweils mit ihrem Speicher und vielen Datenspeichern auf der ganzen Welt laufen. aber es gibt immer nur einen Memcache-Server, und bedenken Sie, dass dieser Dienst anfällig für Fehler ist, sogar keine SLA dafür.

    
Daniel De León 23.09.2013 20:35
quelle

Tags und Links