Groupcache: So emulieren Sie die Ablaufzeit

Erstellt am 29. Juli 2013  ·  3Kommentare  ·  Quelle: golang/groupcache

Mir ist aufgefallen, dass in der Designentscheidung Setting and expiration time ausgelassen wurde. Ich kann mir vorstellen, dass dies daran liegt, dass Sie eine Idee haben, wie Sie diese Funktion emulieren können.

Der Anwendungsfall, den ich im Hinterkopf habe, ist das Erstellen eines zwischengespeicherten Reverse-Proxys vor einer Web-App. Ich weiß, dass Seiten für X min zwischengespeichert werden sollten.

Könnten Sie bitte kurz erläutern, wie Sie das angehen würden?

(Ich bin mir nicht sicher, ob dies der richtige Ort ist, um Fragen zu stellen.)

Hilfreichster Kommentar

Soweit ich das Design von Groupcache verstanden habe, können Sie zwischengespeicherte Elemente nicht ungültig machen oder aktualisieren. Diese Funktion wurde weggelassen, weil sie in einem verteilten System extrem schwierig ist und teure Konsensalgorithmen (zB Paxos) erfordern würde.

Sie können jedoch alle X Minuten einen eindeutigen Cache-Schlüssel generieren, indem Sie die Zeitinformationen im Cache-Schlüssel selbst codieren. Zum Beispiel könnte "foo-12:30" das Element "foo" zur Zeit 12:30 eindeutig beschreiben. Ihre Anwendung kann dann bis beispielsweise 12:40 Uhr auf dieses Element zugreifen. Zu diesem Zeitpunkt wird möglicherweise ein neues Element "foo-12:40" generiert und das alte Element ("foo-12:30") läuft schließlich ab, sobald die Clients keinen Zugriff mehr darauf haben.

Wenn Ihre verteilte Anwendung in der Lage ist, Revisionsnummern konsistent zu aktualisieren und abzurufen (Sie können dies beispielsweise mit doozerd, zookeeper oder der Datenbanklösung Ihrer Wahl tun), können Sie diese Revisionsnummer auch als Teil des Cache-Schlüssels kodieren. Alternativ können Sie möglicherweise auch die HTTP-Header "Last-Modified" oder "ETag" als eine Art Revisionsnummer in Ihrem Web-Proxy verwenden.

Alle 3 Kommentare

Soweit ich das Design von Groupcache verstanden habe, können Sie zwischengespeicherte Elemente nicht ungültig machen oder aktualisieren. Diese Funktion wurde weggelassen, weil sie in einem verteilten System extrem schwierig ist und teure Konsensalgorithmen (zB Paxos) erfordern würde.

Sie können jedoch alle X Minuten einen eindeutigen Cache-Schlüssel generieren, indem Sie die Zeitinformationen im Cache-Schlüssel selbst codieren. Zum Beispiel könnte "foo-12:30" das Element "foo" zur Zeit 12:30 eindeutig beschreiben. Ihre Anwendung kann dann bis beispielsweise 12:40 Uhr auf dieses Element zugreifen. Zu diesem Zeitpunkt wird möglicherweise ein neues Element "foo-12:40" generiert und das alte Element ("foo-12:30") läuft schließlich ab, sobald die Clients keinen Zugriff mehr darauf haben.

Wenn Ihre verteilte Anwendung in der Lage ist, Revisionsnummern konsistent zu aktualisieren und abzurufen (Sie können dies beispielsweise mit doozerd, zookeeper oder der Datenbanklösung Ihrer Wahl tun), können Sie diese Revisionsnummer auch als Teil des Cache-Schlüssels kodieren. Alternativ können Sie möglicherweise auch die HTTP-Header "Last-Modified" oder "ETag" als eine Art Revisionsnummer in Ihrem Web-Proxy verwenden.

Ja, was hat tux21b gesagt. (absichtlich weggelassen, zumindest vorerst).

Danke @tux21b für den

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

AlexanderChen1989 picture AlexanderChen1989  ·  6Kommentare

cowboyrushforth picture cowboyrushforth  ·  5Kommentare

abennett picture abennett  ·  3Kommentare

orcaman picture orcaman  ·  9Kommentare

Cysioland picture Cysioland  ·  3Kommentare