2009-08-09 6 views
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.Ist memcached auf Servern in der Google App Engine gemeinsam?

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

Insbesondere möchte ich jeden Server, um tatsächlich eine eigene Instanz von Memcached (keine Replikation in anderen Memcached-Instanzen) laufen. 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 sind dumm, wie ich habe gerade angefangen darüber zu lesen, aber diese sind erste Fragen, die ich in ausgeführt haben. Vielen Dank.

Antwort

12

App Engine verwendet nicht wirklich memcached, sondern eher eine API-kompatible Reimplementierung (hauptsächlich von der same guy, glaube ich - in seiner "20% time" ;-).

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

2

Typischerweise Memcached nicht teilt 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.

4

Der Memcached-Server nicht, hängt von der Einheit Gruppe ausgewählt, die Sie verwenden (die Entität Gruppe ist ein Konzept, aus dem Datenspeicher, ein anderes Tier).

Jeder Server verfügt über eine eigene Instanz von Memcached, und jeder Server einen Prozentsatz der Objekte speichern, 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 eine dieser Boxen ausfällt, verlieren Sie 1/N Ihrer Memcached-Daten (N ist die Anzahl der in AppEngine ausgeführten Memcached-Instanzen).

0

Basierend auf, was ich weiß, ist es nur eine Instanz von Memcache von Ihnen gesamte Anwendung, da nur jeweils mit ihrem Gedächtnis, und viele Datenspeicher auf der ganzen Welt, aber es gibt viele Beispiel von Code sein könnte läuft ein Memcache-Server zu einer Zeit, und bedenken Sie, dass diese anfällig für Ausfall-Service, ist sogar keine SLA dafür.