Mit Windows und .NET zwischengespeichert

83

Gibt es bereits jemanden, der memcached für die Produktion in einer Windows-Umgebung implementiert? Da viele Blogs, die ich gelesen habe, nicht empfohlen werden, memcached in Windows auszuführen, insbesondere für die Verwendung in der Produktion, z. B. memcached unter Windows .

Und noch etwas: Welcher zwischengespeicherte Client eignet sich gut für c # und .net 3.5? Ich habe viele Alternativen gefunden, z. B. Memcached Providers @ Codeplex , Beitmemcached und Memcached Provider @ Sourceforge

Funky81
quelle
6
Sie zeigen auf einen Blog-Beitrag von 2008. Memcached wird in letzter Zeit unter Windows
Dustin
1
+1 zu Dustin. Wir haben NorthScale verwendet und sind recht Windows-freundlich, mit einer netten Admin (Web) UI
RAM
2
@Dustin und @ram - Dustin, genießen Sie Ihre +1, aber diese Frage wurde im Jahr 2008 gestellt.
Justin
3
Heh. Das muss das sein, was '08 da ist. Das tut mir leid. :)
Dustin

Antworten:

49

Warum müssen Sie memcached unter Windows ausführen? Es ist eine teure Angelegenheit in einer Produktionsumgebung.

Wenn Ihr Code in einer Windows-Umgebung ausgeführt werden muss, holen Sie sich einen Windows-Memcached-Client und sprechen Sie mit einem * nix-basierten Memcached-Computer.

In einer Produktionsumgebung, in der memcached auf Server 2003 oder 2008 ausgeführt wird, erhalten Sie Lizenzen für alle diese Boxen. Linux bietet Ihnen alle OSS-Vorteile. Die Gesamtbetriebskosten steigen linear mit dem unter Windows zwischengespeicherten Speicher

Bearbeiten:

Es ist ungefähr 1,5 Jahre her, seit ich diese Antwort geschrieben habe und seitdem haben sich viele Dinge geändert. Sie müssen es beachten, besonders wenn jemand wie Dustin Kommentare abgibt.
Hier erfahren Sie, wie Sie Memcaching unter Windows ausführen können. Laden Sie memcached für Windows von Couchbase (ehemals Northscale) herunter .
Wenn Sie memcached auf demselben Produktionscomputer ausführen möchten, möchten Sie es normalerweise in begrenztem Speicher starten, dh definieren Sie den maximalen Speicher, den memcached verwenden darf.

c: \ Programme \ memcached> memcached.exe -m 128.

Hier läuft memcached mit maximal 128 MB Auslastung. Sie möchten nicht, dass memcached den gesamten Speicher Ihres Webservers belegt.

In dem Moment, in dem Sie sich entschieden haben , memcached zu verkleinern, müssen Sie überlegen, was ich zuvor gesagt habe. Komprimieren Sie zusätzlich Ihre Werte in den Schlüsselwertkombinationen. Webserver verbrauchen normalerweise nur sehr wenig CPU (2-3%), und die Komprimierung bringt im Vergleich zur CPU-Auslastung im gesamten Netzwerk viel Wert. Wenn Sie über die normale Komprimierung zu besorgt sind, versuchen Sie es mit LZO

Cherian
quelle
2
Vielen Dank für Ihre Antwort, das ist es, wonach ich suche.
Funky81
31
Wie steigen die Gesamtbetriebskosten unter Windows exponentiell an? Die Lizenzkosten steigen linear mit der Anzahl der Maschinen. Wenn Sie jedoch Hardwarekosten, Rack-Platz und Strom, Supportverträge und Betreibergehälter berücksichtigen, sind die Lizenzkosten von Windows ehrlich gesagt ziemlich unbedeutend.
Greg Beech
23
Nur um Cherians Argumentation zu widerlegen. Ein treibender Faktor beim Hosten in Windows kann das Systemadministratorkompetenz sein. Zum Beispiel könnten kleinere Shops, die nicht über die Ressourcen verfügen, um einen * nix-Administrator zu beauftragen, nur um eine zwischengespeicherte Box aufzurufen, stark vom Hosting auf einer Plattform profitieren, mit der das Unternehmen bereits vertraut ist (z. B. Windows).
Joel Martinez
2
Ich würde diese Antwort DV geben, da sie wirklich nichts anspricht, was das OP gefragt hat, aber er sagte, dies sei genau das, wonach er gesucht habe.
Chris Marisic
11
Downvoted, weil es die eigentliche Frage nicht anspricht. Wenn es das Problem des OP gelöst hat, sollte die Frage vielleicht umgeschrieben werden?
Sh-Beta
21

Ich bin überrascht, dass hier noch niemand Redis erwähnt hat - es ist eines der funktionsreichsten und schnellsten (110.000 SETs pro Sekunde in einer Linux-Box der Einstiegsklasse) Schlüsselwertspeicher mit umfassender Datenstrukturunterstützung für Zeichenfolgen. Sets, Listen, sortierte Sets und Hashes.

Obwohl Windows keine offiziell unterstützte Plattform ist, läuft es perfekt unter Windows, wenn alle Tests bestanden werden. Ich habe Windows-Builds (mit Cygwin) hier verfügbar: https://github.com/ServiceStack/ServiceStack.Redis#redis-server-builds-for-windows

Es hat auch Client-Bindungen für fast jede Programmiersprache, die heute verwendet wird. Ich verwalte einen umfangreichen Open Source C # Redis-Client mit nativer API-Unterstützung für alle C # POCO-Typen, Transaktionsunterstützung und Thread-sicheren Client-Manager, die bereit sind, in ein beliebiges IOC unter folgender Adresse abgelegt zu werden: https://github.com/ServiceStack/ServiceStack. Redis

Mythos
quelle
12

Da Velocity zu diesem Zeitpunkt noch nicht vorhanden war, habe ich für das Unternehmen, für das ich arbeite, Skiviez, einen zwischengespeicherten Windows-Port verwendet. Es besteht hauptsächlich nur die Bereitstellung eines zentralen Caches für mehrere Arbeitsprozesse auf demselben Computer. Es läuft seit ungefähr 18 Monaten auf einer E-Commerce-Website, die nur in geringem Umfang genutzt wird (~ 18.500 Zugriffe pro Tag). Der von mir verwendete Client war Enyim , der als Cache-Anbieter für iBATIS.NET integriert war. Dieser Kunde scheint gut genug zu funktionieren; Memcached Clients sind auch anfangs nicht sehr kompliziert.

Wenn ich es noch einmal tun müsste, würde ich mir wahrscheinlich Velocity ansehen, wenn ich mich dazu verpflichten würde, für meine verteilte Caching-Lösung unter Windows zu bleiben. Aber es funktioniert jetzt, also werde ich es nicht anfassen.

(Nebenbei: Seitdem habe ich den größten Teil des Cache-Bedarfs negiert, indem ich bestimmte Cache*Spalten zu Schlüsseltabellen in der Datenbank hinzugefügt habe , die jeden Abend durch eine geplante Aufgabe aktualisiert werden. Dies hat die Ressourcen von Anfang an viel weniger belastet In der CPU-Zeit wurde die Datenbank nach der nachfolgenden Belastung der Speicherverfügbarkeit abgefragt, indem die zwischengespeicherten Ergebnisse im Speicher gehalten wurden. Dies machte es auch im Code viel expliziter, wenn auf eine zwischengespeicherte Version der Daten zugegriffen wird, im Vergleich zu einer berechneten Version. the-fly-Version. Ich bin sicher, Sie haben viele Gründe, einen verteilten Cache zu verwenden, aber es ist immer einen Versuch wert, einen Schritt zurückzutreten und sich zu fragen, ob Sie ihn wirklich brauchen oder nicht!)

Nicholas Piasecki
quelle
Velocity ist jetzt Teil von AppFabric
Jon
7

Ich weiß nicht, an welchem ​​Projekt Sie arbeiten, aber vielleicht möchten Sie sich das Microsoft Velocity-Projekt ansehen. Von der Seite:

"Velocity" ist eine verteilte In-Memory-Anwendungs-Cache-Plattform zur Entwicklung skalierbarer Hochleistungsanwendungen. "Velocity" kann zum Zwischenspeichern eines CLR-Objekts (Common Language Runtime) verwendet werden und bietet Zugriff über einfache APIs. Die Hauptaspekte von "Velocity" sind verteilte Cache-Leistung, Skalierbarkeit und Verfügbarkeit.

Ich habe ein paar Demos gesehen und es sieht so aus, als ob es wirklich gut in das .net Framework integriert ist.

Das Problem mit den Client-APIs besteht darin, dass immer noch eine Instanz von memcached auf einer anderen Box ausgeführt werden muss, vorzugsweise wie Sie bemerkt haben, unter Verwendung des LAMP-Stacks. Die Verwendung von Geschwindigkeit bedeutet, dass Sie immer noch auf demselben Stapel ausgeführt werden und die Integration auf der .net-Plattform enger ist.

Wenn Sie jedoch Geschwindigkeit als Cache für andere .net-Anwendungen verwenden möchten, müssen Sie möglicherweise Ihre eigene API schreiben, um die Geschwindigkeitsdaten für den Verbrauch verfügbar zu machen.

Lomaxx
quelle
Soweit ich weiß, Geschwindigkeit noch in der Entwicklung, versuche ich deshalb, andere Alternativen zu suchen. Und das ist memcached
Funky81
Nachdem ich eine Weile gelesen habe, ist die Installation und Wartung der Geschwindigkeit nicht so einfach wie im Memcached
Funky81
3
Verwenden Sie den LAMP Stack? Meinen Sie nicht "mit Linux", da Sie Apache, MySQL oder PHP nicht benötigen, um memcached auszuführen.
GateKiller
6

Die Verwaltung der Geschwindigkeit ist etwas aufwändiger, aber weitaus leistungsfähiger als das Speichern im Speicher. Ich bin nicht anti-memcached, nicht im geringsten, es ist großartig. Aber in Zukunft sind neue Projekte, die auf .NET basieren, verrückt, Velocity nicht zu nutzen, selbst in ihrem derzeit unveröffentlichten Zustand.

Silvas
quelle
6

Schauen Sie sich SharedCache an . Es ist Open Source, einfach zu bedienen und sehr zuverlässig.

Hochleistungs-Caching-System für Objekte mit verteiltem Speicher, allgemeiner Natur, das jedoch das dynamische Web beschleunigen und / oder Anwendungen gewinnen soll, indem die Datenbanklast verringert wird. Vergessen Sie nicht, uns unter http://www.sharedcache.com zu besuchen

Kay One
quelle
3

Das Problem mit den Client-APIs besteht darin, dass immer noch eine Instanz von memcached auf einer anderen Box ausgeführt werden muss, vorzugsweise wie Sie bemerkt haben, unter Verwendung des LAMP-Stacks.

Gar nicht wahr. Der LAMP-Stack (Linux, Apache, MySQL, PHP) ist nicht erforderlich, um Memcached auszuführen. Ich bevorzuge derzeit das Memcaching gegenüber der Geschwindigkeit, bis die Geschwindigkeit außerhalb des CTP liegt. Ich habe ein bisschen mit Geschwindigkeit herumgespielt, fand es aber zu unhandlich. Ich folge dieser ganzen KISS-Sache, weißt du ... halte es einfach. Nichts ist einfacher als das Zwischenspeichern ... Get (Schlüssel) ... Put (Schlüssel, Wert) ... Destroy (Schlüssel).


quelle
1

Ich weiß, dass ich hier etwas zu spät zur Party komme, und es gibt bereits unzählige gute Antworten.

Wir haben Membase unter Windows Server mit großem Erfolg verwendet. Es ist 100% kompatibel mit Memcached und wird von einem netten GUI-Installationsprogramm und einem Webkonfigurationsserver erstellt. Es ist sehr einfach zu verwalten.

Es sind auch andere NoSQL-Funktionen enthalten, die außerhalb des Bereichs dieses Threads liegen, aber einen Blick wert sind. Sie haben eine kostenlose Lizenz für Entwicklungs-, Test- und (eingeschränkte) Produktionsserver.

Membase-Downloads

Auf derselben Seite wird nur Windows Install for Memcached installiert, wenn Sie keine der zusätzlichen Funktionen in Membase möchten.

bopapa_1979
quelle
0

Wenn Sie einen zwischengespeicherten Client unter Windows ausführen möchten, gibt es zwei zusätzliche Open Source-Server, die diese Aufgabe übernehmen können. Beide implementieren das Standard-Memcached-Server-Protokoll und sind in Java geschrieben, sodass sie unter Windows ausgeführt werden können.

Brent Matzelle
quelle