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.
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.
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).
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.
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.
Tags und Links memcached google-app-engine