NCache come cache di secondo livello di NHibernate

Scopri come utilizzare NCache come cache di secondo livello per NHibernate. NCache fornisce un provider di cache di secondo livello NHibernate che puoi inserire tramite le modifiche web.config o app.config. NCache ha anche implementato la funzione di sincronizzazione del database in questo modo puoi specificare quali classi devono essere sincronizzate con il database. NCache consente di specificare SqlDependency o qualsiasi dipendenza databased conforme a OLEDB per questo.

NCache è una soluzione di cache distribuita aziendale, pensata per la scalabilità e le prestazioni delle tue applicazioni. Nel tutorial di oggi, vedremo come scalare le applicazioni NHibernate utilizzando un provider di cache di livello 2 da NCache.

Limitazioni con NHibernate L1 Cache

NHibernate è un eccellente strumento ORM per la tua applicazione e semplifica i tuoi standard di codifica tra diversi team.

Limitazioni con NHibernate L1 Cache
Limitazioni con NHibernate L1 Cache

NHibernate ti offre una cache in-process per impostazione predefinita in cui puoi conservare temporaneamente i dati all'interno del tuo processo di lavoro per ogni transazione. Funziona bene per le applicazioni a server singolo, ma diventa un collo di bottiglia delle prestazioni per le applicazioni aziendali.

Nelle applicazioni aziendali, di solito hai più server Web in uno scenario di bilanciamento del carico e i loro più processori di lavoro in esecuzione su ciascuno di essi. Pertanto, si ottengono più query ridondanti sul database per gli stessi dati di ciascun processo di lavoro, il che rallenta l'applicazione come risultato netto e si traduce anche in un'archiviazione ridondante individualmente su ciascun lato del processo di lavoro nella propria memoria, e tu non può essere ridimensionato quando è necessario ampliare la base di utenti.

Modello del provider di cache NHibernate L2

Quindi, per superare questi limiti NHibernate fornisce un provider di cache di livello 2, dove puoi collegare una cache di secondo livello.

  • Idealmente dovrebbe essere la cache L2
    • fuori processo
    • in memoria
    • Cache distribuita
  • Affidabile e altamente disponibile
  • Scalabile

Modello del provider di cache NHibernate L2

La cache di secondo livello viene utilizzata insieme alla cache in-process. Ogni volta che ottieni i dati dal tuo database per la prima volta, NHibernate inserisce automaticamente quei dati nella cache di secondo livello, che è condivisa da tutti i processi di lavoro.

Idealmente, la cache di secondo livello dovrebbe essere una cache in memoria, poiché si desidera aumentare le prestazioni dell'applicazione. Deve essere una cache esaurita che non viene svuotata anche se il processo di lavoro viene riciclato. Deve essere distribuito, quindi può essere condiviso tra più processi di lavoro su diversi server Web.

Ricorda che puoi solo aumentare il tuo scalabilità e prestazioni delle applicazioni, se l'infrastruttura di memorizzazione nella cache sottostante è altamente scalabile e orientata alle prestazioni.

NCache - Provider di cache NHibernate L2

Quindi, qui abbiamo un tale provider di cache di livello 2 da NCache.

NCache - Provider di cache NHibernate L2
NCache - Provider di cache NHibernate L2

Questa è una soluzione di cache distribuita in memoria fuori processo, che ha a clustering dinamico capacità e si estende su più server. Il carico delle transazioni dalla tua applicazione viene distribuito equamente, a tutti i server di cache in fase di esecuzione, per ottenere maggiori prestazioni e NCache mantiene i dati replicati nell'intero cluster per fornirti un failover coerente in caso di perdita di uno qualsiasi dei tuoi server di cache.

NCache supporta le modalità di replica sincrona e asincrona. Quindi, puoi mantenere i dati replicati senza alcun sovraccarico di prestazioni. La prestazione di NCache cresce in modo lineare, quando si aggiungono più server al livello di memorizzazione nella cache. Non c'è limite alla dimensione della cache, quindi puoi aumentare quanto vuoi sulla dimensione dei tuoi dati.

È inoltre possibile includere più server in fase di esecuzione nel cluster di cache in modo dinamico, per aumentare la capacità transazionale e disporre di più memoria.

Fornisce inoltre un monitoraggio in stile dashboard, che ti aiuta con una rapida occhiata, per vedere le prestazioni della cache, l'attività dell'applicazione client sulla cache e le varie risorse di sistema consumate dalla cache.

L'immagine a destra mostra il Topologia partizione-replica, che mantiene i dati partizionati e replicati su più Server. Partition-Replica è la topologia più popolare all'interno NCache.

NCache Cache di livello 2 distribuita per NHibernate

Quindi, ecco un diagramma di architettura di alto livello.

Diagramma dell'architettura di alto livello
Diagramma dell'architettura di alto livello

Quando colleghi questo provider di livello 2 da NCache nell'applicazione aziendale, non richiede alcuna modifica del codice nell'applicazione. Hai solo bisogno di avere alcune modifiche alla configurazione nel tuo web.config or app.config, parleremo di esso. Quindi, non ci sono più chiamate ridondanti che vanno al tuo database, se hai già recuperato i dati nella transazione precedente.

In una web farm di bilanciamento del carico come questa, i dati vengono inviati automaticamente alla cache di secondo livello da NHibernate, una volta ottenuti per la prima volta dal database e questa cache è condivisa da tutti i server Web. Quindi, ti aiuta a ridurre il carico sul tuo database.

NCache Funzionalità configurabili della cache di livello 2

Quindi, con le modifiche alla configurazione, puoi configurare una serie di funzionalità per il provider di cache di secondo livello.

  • Usa le regioni NHibernate
  • Fai scadere gli oggetti della cache con:
    • Tempo di scivolamento o di morte
    • Scadenza assoluta
  • Sincronizzazione database con:
    • Dipendenza SQL
    • Dipendenza dal polling
  • Usa sincronizzazione. / Asincrono. operazioni di cache
  • Imposta la priorità degli elementi della cache

NCache Funzionalità configurabili della cache di livello 2

Ad esempio, puoi utilizzare le regioni NHibernate, puoi impostare gli oggetti cache in modo che scadano con una scadenza assoluta o di inattività, puoi anche configurare la dipendenza SQL per sincronizzazione del database. Sono supportate sia le operazioni della cache sincrone che quelle asincrone ed è anche possibile configurare la priorità degli elementi della cache.

Quindi, ti guiderò attraverso una rapida sessione pratica passo dopo passo per la configurazione NCache Provider di cache di livello 2 per un'applicazione di esempio.

ti consiglierei di scarica l'edizione Enterprise gratuita per 30 giorni dal nostro sito web. Questo è un prodotto completamente funzionale e ricco di funzionalità, anche nei giorni di valutazione.

Esempio di integrazione NHibernate in NCache

Una volta installato NCache, ecco come appare sul tuo sistema.

Esempio di integrazione NHibernate
Esempio di integrazione NHibernate

Installa una serie di esempi di Visual Studio. Andiamo ad esempio all'esempio NHibernate, aperto in Visual Studio. Potrebbe essere necessario ricostruire il campione se utilizzi Video Studio 2010. Potrebbe essere necessaria anche la conversione.

Diamo un'occhiata alle modifiche alla configurazione che devi apportare al tuo app.config per il provider di cache di secondo livello da NCache.

File app.config
File app.config

Tutto ciò che serve per definire una sezione denominata 'ncache' per il provider di cache come questo nel tuo app.config e quindi puoi aggiungere una proprietà per il provider di cache come questo.

Definiamo anche il NCache sezione stessa con più regioni. Queste regioni sono le regioni NHibernate. Ogni regione viene mappata su un nome cache diverso da NCache.

Quindi, qui abbiamo una regione predefinita, che soddisfa tutte le entità su cui non specifichi alcuna regione NHibernate e abbiamo una regione del nome specifico come questa regione "Cliente". All'interno di ciascuna regione, puoi specificare più proprietà per ciascuna delle classi che rientrano in quella regione.

Regioni ibernate
Regioni ibernate

Ad esempio, imposta la dipendenza SQL per questo, imposta la priorità degli elementi della cache, usa sincrona o asincrona, imposta la strategia di scadenza su tempo relativo o inattivo.

Esecuzione delle cache

Quindi, per eseguire l'esempio, è necessario disporre di un paio di cache. La cache predefinita e 'myPartitionReplicaCache' in esecuzione, all'interno di NCache direttore.

Andiamo a NCache Manager, l'ho configurato con "myPartionedReplicaCache" e cache predefinita con 2 configurazioni del server in questo momento. Eseguiamo la tua applicazione, visualizziamo l'elenco dei clienti, ad esempio guarda la richiesta/sec che va a entrambi i server inviando i dati ad essa, una volta ottenuti dal Database.

Richieste/Sec con risposta uguale
Richieste/Sec con risposta uguale

Quindi, ci sono circa 49 più 42 elementi su entrambi questi server, equamente distribuiti su entrambi e se eseguo di nuovo la query, sarò in grado di ottenere questi risultati direttamente dal cluster di cache di secondo livello, invece di andare al tuo database. Quindi, guarda le Richieste/sec con risposta equa, da entrambi i Server.

Test di affidabilità della cache

Possiamo fare il test di affidabilità. Possiamo rimuovere uno dei server della cache e tuttavia vedrai che il cluster della cache è in grado di fornirti gli elementi e recuperarli dai server rimanenti.

Per questo dovremo fermare uno dei server e lo farò. Abbiamo i 2 server, 21 e 22. Ho intenzione di fermare 22, come se fosse uscito dal cluster e quindi eseguire nuovamente la query.

Arresto del server cache
Arresto del server cache

Vedrai 49 più 42, i 91 elementi sono ancora disponibili su uno dei server. Sono stati recuperati dall'altro server ora e se eseguo nuovamente la query, visualizzo nuovamente l'elenco dei clienti, dovrei essere in grado di ottenere tutti gli elementi da questo server, dal cluster. Puoi vedere le Richieste/sec in corso, i Recuperi/sec in corso, da questo server.

Test di affidabilità riuscito
Test di affidabilità riuscito

Quindi, ora hai la memorizzazione nella cache affidabile, indipendentemente dal fatto che uno dei tuoi server di cache non sia disponibile in fase di esecuzione. Gli altri server cache possono recuperare i dati e rispondere bene alle tue domande. Allo stesso tempo, stai riducendo il carico sul tuo database. Non verranno più inviate query ridondanti al tuo database.

Codice di integrazione per NHibernate in NCache

Forniamo il codice di integrazione per NHibernate in NCache, come puoi vedere nel progetto che ho aperto e questo codice sorgente è disponibile per l'ottimizzazione o la personalizzazione per le tue specifiche versioni di NHibernate.

Codice di integrazione per NHibernate in NCache
Codice di integrazione per NHibernate in NCache

Se vai al NCache cartella di installazione, qui abbiamo il codice. Quindi, grazie mille per il tuo tempo oggi e oggi abbiamo visto, come NCache può essere utile. Quanto è affidabile e scalabile NCache vale a dire, per aumentare le prestazioni della tua applicazione NHibernate. Resta sintonizzato per ulteriori aggiornamenti da NCache. Discuteremo varie funzionalità nei prossimi tutorial. Se hai domande inviaci un'e-mail su support@alachisoft.com

© Copyright Alachisoft 2002 - . Tutti i diritti riservati. NCache è un marchio registrato di Diyatech Corp.