2013-03-14 10 views
7

Il Windows Azure Caching Document diceCollegamento alla nuova Caching Azure (DataCache, DataCacheFactory, e il pool di connessioni)

Se possibile, conservare e riutilizzare lo stesso oggetto DataCacheFactory per conservare la memoria e ottimizzare le prestazioni."

qualcuno ha visto metriche o qualsiasi quantificazione di quanto costoso questo è?

One argument is that

"impostazione MaxConnectionsToServer ... determina il numero di chennels per DataCacheFactory che si aprono al cluster cache".

Quindi, se MaxConnectionsToServer = 1 e DataCacheFactory è un Singleton nella vostra app, allora hai efficacemente sincronizzato tutte le richieste al tuo web server!

Tuttavia, thereis alot di indicazione che DataCacheFactory deve essere un singleton (ad esempio, inserire Application_OnStart).

Questo è fondamentale e non posso credere che non sia nella documentazione di Microsoft. DataCacheFactory è trattato allo stesso modo in AppFabric, nella cache condivisa di Azure e nella cache di Azure? Ho solo difficoltà a credere che Microsoft abbia progettato il caching in un modo che richiede un oggetto factory singleton. È come richiedere a chiunque usi SqlConnection di avere un oggetto SqlConnectionFactory singleton nella propria applicazione.

Quindi, considerando una web app relativamente media (ad esempio, 1.000 s di richieste all'ora, ~ 100 oggetti nella cache, la richiesta media accede 5 oggetti memorizzati nella cache):

  1. Per impostazione predefinita (e la raccomandazione) quanti oggetti Factory dovrebbero esserci in una volta?
  2. Quanto tempo è necessario per creare un riferimento DataCacheFactory?
  3. Quanto tempo è necessario per creare un riferimento DataCache?
  4. Dovrebbero essere solo 1 oggetto DataCacheFactory per app e solo 1 riferimento DataCache per richiesta?

EDIT (risposte in corso):

(1/2). Consenti al pool di connessioni di Azure di gestire gli oggetti Factory

(3). Ancora test ...

(4). Sto ancora cercando di capire se dovrei riutilizzare i riferimenti DataCache

+0

Ci sono aggiornamenti riguardo a questin 3/4? Crei un DataCache per ogni richiesta? – Robar

+1

Robar, abbiamo scoperto che la creazione di un riferimento DataCache con ogni richiesta era poco costosa una volta passati al pooling delle connessioni della cache. – SemanticZen

+0

Tuttavia, abbiamo rilevato che il caching non risolveva i nostri problemi sottostanti che erano correlati alle prestazioni di SQL Azure, quindi non usiamo più Azure. Se è necessario un database transazionale ad alte prestazioni, si dovrebbe avere problemi con SQL Azure. Se si dispone di un sistema di gestione dei contenuti (vale a dire soprattutto letture), suppongo che il caching dovrebbe risolvere i vostri problemi. – SemanticZen

risposta

11

Che ne dite di questo, Microsoft ha fatto le migliori pratiche di documenti e lo fa coinvolgono il pool di connessioni! Anche se non è facile da trovare (almeno per me).

Sembra che la risposta è semplicemente di non utilizzare l'oggetto DataCacheFactory sede di attuazione del Caching recente Azure e solo access the DataCache object directly

"Ci sono anche nuove sovraccarichi al costruttore DataCache che lo rendono più semplice per creare un cache client. In passato, era sempre necessario per creare un oggetto DataCacheFactory che restituisce la cache di destinazione . Ora è possibile creare la cache direttamente con il costruttore DataCache . L'esempio seguente crea un client nella cache predefinita dalla sezione di default del con file di figurazione. "

DataCache cache = new DataCache(); 

And to use connection pooling.

"Con l'ultima Windows Azure SDK, il pool di connessioni è attivato per impostazione predefinita quando si definiscono le impostazioni della cache nel file di configurazione del web applicazione o. A causa di questo comportamento di default, è importante per impostare le dimensioni del pool di connessioni in modo corretto: la dimensione del pool di connessioni è configurata con l'attributo maxConnectionsToServer sull'elemento dataCacheClient. "

Vorrei che Microsoft fornisse indicazioni su come configurare correttamente maxConnectionsToServer, ma che può essere determinato tramite test. Il pool di connessioni automatiche con la nuova Cache di Azure è piuttosto interessante :)

+0

Non facile da trovare davvero. Non più però grazie alla tua domanda e risposta su StackOverflow! –

+0

Entrambi i collegamenti sono morti ora. Ho trovato questo collegamento che sembra essere simile: [Comprensione e gestione delle connessioni per il servizio cache gestita di Azure] (http://msdn.microsoft.com/en-us/library/azure/dn386109.aspx) –

+0

In effetti entrambi i collegamenti sono morti , che bello di Microsoft. La parte più rilevante dei documenti morti è citata sopra. Questo articolo riguarda il materiale di base: http://msdn.microsoft.com/en-us/library/hh552970.aspx – SemanticZen

1

Suppongo che tu stia facendo riferimento al servizio di memorizzazione nella cache condivisa (precedentemente noto come Cache di AppFabric di Azure) Non esiste alcun costo per una singola connessione. Tuttavia, quando acquisti un account Cache, stai pagando non solo per la dimensione di un account cache ma anche per un particolare numero di connessioni.

L'account cache più piccolo ha 10 connessioni all'ora, mentre quello più costoso consente 160 connessioni simultanee.Pertanto, se sei preoccupato che potresti rimanere senza connessioni date le dimensioni del tuo account, è forse prudente fare attenzione al numero di connessioni che apri dalla tua app.

Maggiori dettagli http://msdn.microsoft.com/en-us/library/windowsazure/hh697522.aspx

+0

Igorek, in realtà mi riferisco alla nuova versione di Windows Azure Caching, ma la programmazione rispetto ai due sembra molto simile (anche se la configurazione e l'architettura possono differire in modo significativo). Ho aggiornato la domanda per renderla più chiara e ho aggiunto diversi link. Grazie! – SemanticZen

Problemi correlati