2013-03-14 15 views
7

Die Windows Azure Caching Document sagtauf die neue Azure Caching Anschluss (DataCache-, DataCacheFactory & Connection Pooling)

Wenn möglich, speichern und die gleiche DataCacheFactory Objekt wiederverwenden Speicher zu sparen und die Leistung zu optimieren.“

Hat jemand irgendwelche Metriken oder eine Quantifizierung gesehen, wie teuer ist das?

One argument is that

"MaxConnectionsToServer Einstellung ... bestimmt die Anzahl der Chennels pro DataCacheFactory, die in den Cache-Cluster geöffnet werden."

Also, wenn MaxConnectionsToServer = 1 und DataCacheFactory ein Singleton in Ihrer Anwendung ist, dann Sie haben Synchronisiert effektiv alle Anfragen an Ihren Webserver!

Jedoch thereis alot der Hinweis, dass DataCacheFactory ein Singleton sein sollte (d. H. In Application_OnStart).

Dies ist kritisch und ich kann nicht glauben, dass es nicht in der Microsoft-Dokumentation ist. Wird die DataCacheFactory in AppFabric, Azure Shared Caching und Azure Caching gleich behandelt? Es fällt mir nur schwer zu glauben, dass Microsoft das Caching so konzipiert hat, dass ein Singleton-Factory-Objekt benötigt wird. Dies erfordert, dass jeder, der SqlConnection verwendet, ein Singleton-SqlConnectionFactory-Objekt in seiner Anwendung verwendet.

also einen relativ durchschnittlichen Web-App unter Berücksichtigung (zum Beispiel 1000e Anfragen pro Stunde, ~ 100 Objekte im Cache, die durchschnittliche Anforderung zuzugreift 5 zwischengespeicherten Objekte):

  1. standardmäßig (und Empfehlung) Wie viele Factory Objekte sollte es auf einmal geben?
  2. Wie lange dauert es, eine DataCacheFactory-Referenz zu erstellen?
  3. Wie lange dauert es, eine DataCache-Referenz zu erstellen?
  4. Sollte ihr nur 1 DataCacheFactory-Objekt pro App und nur 1 DataCache-Referenz pro Anfrage sein?

EDIT (Antworten in progress):

(1/2). Lassen Sie Azure Connection Pooling die Factory-Objekte behandeln

(3). Noch Test ...

(4). Versuchen Sie noch herauszufinden, ob ich DataCache-Referenzen wiederverwenden sollte

+0

Gibt es irgendwelche Updates zu questin 3/4? Erstellen Sie für jede Anforderung einen DataCache? – Robar

+1

Robar, wir fanden, dass das Erstellen einer DataCache-Referenz mit jeder Anfrage kostengünstig war, sobald wir zum Cache-Verbindungs-Pooling übergingen. – SemanticZen

+0

Wir haben jedoch festgestellt, dass das Caching die zugrunde liegenden Probleme, die mit der SQL Azure-Leistung zusammenhingen, nicht löste, sodass wir Azure nicht mehr verwenden. Wenn Sie eine leistungsstarke Transaktionsdatenbank benötigen, erwarten Sie Probleme mit SQL Azure. Wenn Sie ein Content-Management-System haben (d. H. Meist liest), würde ich denken, Caching sollte Ihre Probleme lösen. – SemanticZen

Antwort

11

Wie wäre es, dass Microsoft Dokument Best Practices haben und es nicht Verbindungspooling beinhalten! Obwohl nicht leicht zu finden (zumindest für mich).

Es scheint, dass die Antwort ist einfach nicht das DataCacheFactory Objekt zu verwenden, wenn die neueren Azure Caching Implementierung und nur access the DataCache object directly

„Es gibt auch neue Überlastungen an dem DataCache- Konstruktor, macht es einfacher, eine schaffen cache client In der Vergangenheit war es immer notwendig, ein DataCacheFactory-Objekt zu erstellen, das den Zielcache zurückliefert Jetzt ist es möglich, den Cache mit dem Konstruktor DataCache direkt zu erstellen Das folgende Beispiel erstellt einen Client für den Standardcache aus dem Standardbereich der Con Figurationsdatei. "

DataCache cache = new DataCache(); 

And to use connection pooling.

„Mit dem neuesten Windows Azure SDK, Connection Pooling von standardmäßig aktiviert ist, wenn Sie Ihre Cache-Einstellungen in der Anwendung oder Web- Konfigurationsdateien definieren. Aufgrund dieses Standardverhaltens ist es wichtig, die Größe einstellen Der Verbindungspool Größe wird mit dem Attribut maxConnectionsToServer für das Element dataCacheClient konfiguriert. "

Ich wünschte, dass Microsoft eine Anleitung gab, wie man den maxConnectionsToServer richtig konfiguriert, aber das kann durch Testen festgestellt werden. Die automatische Verbindung Pooling mit dem neuen Azure Caching ist ziemlich cool :)

+0

Nicht einfach zu finden. Nicht mehr aber dank deiner Frage und Antwort auf stackoverflow! –

+0

Beide Links sind jetzt tot. Ich habe diesen Link gefunden, der ähnlich aussieht: [Verbindungen für Azure Managed Cache Service verstehen und verwalten] (http://msdn.microsoft.com/en-us/library/azure/dn386109.aspx) –

+0

Tatsächlich sind beide Links tot , wie nett von Microsoft. Der relevanteste Teil der toten Dokumente ist oben zitiert. Dieser Artikel behandelt das grundlegende Material: http://msdn.microsoft.com/en-us/library/hh552970.aspx – SemanticZen

1

Ich nehme an, Sie beziehen sich auf Shared Caching Service (zuvor bekannt als Azure AppFabric Cache) Es gibt keine Kosten pro einer einzelnen Verbindung. Wenn Sie jedoch einen Cache-Account erwerben, bezahlen Sie nicht nur für die Größe eines Cache-Accounts, sondern auch für eine bestimmte Anzahl von Verbindungen.

Kleinste Cache-Konto hat 10 Verbindungen pro Stunde, während die teuerste ermöglicht 160 gleichzeitige Verbindungen.Wenn Sie also Bedenken haben, dass Ihnen angesichts der Größe Ihres Kontos möglicherweise keine Verbindungen mehr zur Verfügung stehen, sollten Sie vorsichtig sein, wie viele Verbindungen Sie von Ihrer App aus öffnen.

Mehr Details http://msdn.microsoft.com/en-us/library/windowsazure/hh697522.aspx

+0

Igorek, ich beziehe mich eigentlich auf das neuere Windows Azure Caching, aber Programmierung gegen die beiden scheinen sehr ähnlich (obwohl die Konfiguration und die Architektur erheblich abweichen können). Ich habe die Frage aktualisiert, um sie klarer zu machen, und mehrere Links hinzugefügt. Vielen Dank! – SemanticZen

Verwandte Themen