2016-07-28 32 views
0

Wir haben einen Memcached-Cluster, der in der Produktion als Cache-Schicht über MySQL läuft. Jetzt überlegen wir, memcached durch Couchbase zu ersetzen, um das Cold-Cache-Problem (im Falle eines Absturzes) zu vermeiden und diese nette Eigenschaft des verwalteten Cache-Clusters zu haben.Couchbase: Wie Cache-Persistenz eine Option machen?

Gleichzeitig möchten wir die Änderungen auf Couchbase zu minimieren minimieren. Eine Möglichkeit, die wir versuchen können, besteht darin, die libmemcached-API beizubehalten und einen HTTP-Proxy einzurichten, um alle Anfragen an Couchbase zu richten. Auf diese Weise wird im Anwendungscode nichts geändert. Wenn ich das richtig verstehe, ist Couchbase im Grunde ein gemanagter Memcache-Cluster. Wir haben die Persistenz-Cache-Elemente nicht genutzt. Wir können nicht so etwas wie ein gewissen gecached Artikel nachlass persistent sein:

# connect to couchbase like connecting to memcached 
$ telnet localhost 11211 

SET foo "foo value" # How can we make this item persistent in Couchbase? 

Ich nehme an, das liegt daran, dass alle Einzelteile in Memcached Eimern gespeichert sind. Die Frage lautet also:

  • Können wir steuern, welche Artikel in Couchbase Eimer oder memcache Bucket gespeichert werden? Müssen wir dazu die libmemcached-API und den damit verbundenen Anwendungscode ändern?

Vielen Dank!

Antwort

2

Ich denke, Sie sollten in laufenden Moxi, die ein memcached Proxy zu couchbase ist. Sie können Moxi mit dem Ziel-Couchbase-Bucket konfigurieren.

Ein couchbase-Cluster spinnt automatisch ein clusterfähiges Moxi-Gateway, auf das Sie Ihre Web-/Anwendungsserver verweisen können. Das nennt couchbase "Server-Side-Moxi".

Alternativ können Sie entweder moxi auf jedem Ihrer Web-/App-Server installieren, also stellen Sie einfach eine Verbindung zu localhost: 11211 her. Moxi behandelt die persistente Verbindung des Couchbase-Clusters. Das nennt couchbase "clientseitige moxi".

+0

Danke für die Antwort. Wenn wir mit Moxi eine Mischung aus Couchbase (persistent) und Memcache (volatile) Buckets verwenden wollen, müssen wir einige Arten von Proxy-Regeln definieren, um einige Elemente selektiv zu erhalten. Kann das funktionieren? –

+0

Soweit mir bekannt ist, gibt es keine Möglichkeit, dass moxi basierend auf dem Schlüssel entscheidet, in welchem ​​Bucket der Wert zwischengespeichert werden soll. Dies würde einen benutzerdefinierten Proxy erfordern. –