NCache Architettura

NCache è una cache distribuita in memoria open source per .NET, Java, Python e Node.js. Progettata per carichi di lavoro ad alto numero di transazioni, offre velocità estrema e scalabilità lineare per rimuovere i colli di bottiglia delle prestazioni e supportare l'elaborazione estrema delle transazioni (XTP). NCache fornisce inoltre replicazione intelligente dei dati e clustering dinamico e auto-riparante per un'elevata disponibilità.

 
 

Cluster dinamico (alta disponibilità)

NCache Dispone di clustering dinamico della cache auto-riparante basato su un'architettura peer-to-peer per garantire un uptime del 100%. Si tratta di cluster basati su TCP; ogni server nel cluster è un peer. Ciò consente l'espansione o la rimozione dell'appartenenza al server dal cluster senza tempi di inattività, senza arrestare né la cache né l'applicazione.

 

Cluster peer-to-peer (auto-guarigione)

NCache Il cluster ha un'architettura peer-to-peer. Ciò significa che non ci sono nodi master/slave e ogni server è un peer. Tuttavia, il Custer Coordinator è il nodo più vecchio del cluster. In caso di guasto, il nodo successivo più vecchio diventa automaticamente il coordinatore.

Questo Cluster Coordinator gestisce tutte le operazioni del cluster e altre informazioni di configurazione della cache. Gestisce inoltre lo stato di salute del cluster e rimuove forzatamente tutti i server cache che sono solo parzialmente connessi agli altri server del cluster.

NCache architettura dinamica del cluster che mostra connessioni TCP peer-to-peer, coordinatore del cluster e mappa di distribuzione dei client.
NCache clustering dinamico e propagazione della mappa di distribuzione in tempo reale.
 

Clustering dinamico

Il nucleo di NCache L'alta disponibilità è un clustering dinamico, che consente l'aggiunta o la rimozione di server senza tempi di inattività propagando le modifiche di appartenenza tramite TCP in tempo reale. Come discusso, NCache ha una architettura di clustering dinamico. Questo permette NCache per essere sempre attivo e funzionante anche quando vengono apportate tali modifiche.

Il clustering dinamico consente di eseguire le seguenti operazioni:

  • - Aggiungi/rimuovi server cache in fase di esecuzione senza fermare la cache o la tua applicazione.
  • - Appartenenza al cluster viene aggiornato in fase di esecuzione e propagato a tutti i server del cluster ea tutti i client connessi al cluster.
 

Gestione di cluster cerebrali divisi

NCache risolve scenari Split-Brain utilizzando un algoritmo di rilevamento intelligente che riconcilia automaticamente i sottocluster divergenti per ripristinare l'integrità dei dati senza intervento manuale. Un'altra parte di NCache Il clustering dinamico è il suo Rilevamento e recupero intelligenti del cervello diviso Capacità. Lo Split Brain si verifica quando, a causa di problemi di rete, la connessione tra i server di cache si interrompe. Ciò causa la formazione di più sottocluster indipendenti, ognuno dei quali presume che gli altri siano inattivi e che il proprio sia l'unico cluster rimasto.

In questi casi, quando i server cache lasciano bruscamente il cluster, i rimanenti NCache I server continuano a tentare di riconnettersi. Ma mentre ciò accade, ogni sottocluster aggiorna i dati in modo indipendente, creando più versioni non sincronizzate dei dati.

Dopo aver risolto il problema di rete, NCache Attiva automaticamente Split Brain. Questo avviene automaticamente decidendo quali server cache possono conservare i propri dati (vincitori) e quali server devono cederli (perdenti). Questo è necessario poiché i server del cluster perdente devono ricongiungersi al cluster vincente come nuovi nodi. Si verifica una certa perdita di dati, ma il risultato finale è un rapido ripristino del cluster cache senza alcun intervento umano.

 

Connessioni client dinamiche

NCache ti permette anche aggiungere o rimuovere client in fase di esecuzione senza arrestare la cache o gli altri client. Quando si aggiunge un client, è sufficiente che un singolo server cache nel cluster stabilisca una connessione. Una volta connesso a quel server, riceve le informazioni necessarie sull'appartenenza al cluster e sulla topologia di memorizzazione nella cache. Dopodiché, decide a quali altri server connettersi.

  • - Cache partizionata/partizione-replica: Il client si connette a tutte le partizioni del server Cache (ma non alle Repliche, perché queste comunicano solo con le loro Partizioni). Questo consente al client di indirizzare la partizione appropriata per le operazioni di lettura e scrittura. Inoltre, se un nuovo server viene aggiunto al cluster, il client riceve informazioni aggiornate sull'appartenenza al cluster e si connette anche a questo server appena aggiunto.
  • - Cache replicata: Nel caso di Cache replicata, il client si connette a un solo server cache nel cluster, ma in modalità bilanciata per garantire che tutti i server cache abbiano lo stesso numero di client. Pertanto, tutte le operazioni di lettura e scrittura sono possibili su un solo server cache. Quando un nuovo server viene aggiunto al cluster, il client ottiene queste informazioni dal server cache e si riconnette a un nuovo server, se necessario.
  • - cache specchiata: Nel caso di cache specchiata, il client si connette semplicemente all'unico nodo attivo in questo cluster a 2 nodi. Se il client si connette al nodo passivo, il nodo passivo comunica al client la presenza del nodo attivo e il client si riconnette automaticamente al nodo attivo. Se il nodo attivo si disattiva e il nodo passivo diventa attivo, tutti i client si connettono automaticamente al nuovo nodo attivo.
NCache clustering dinamico che mostra l'aggiunta e la rimozione di server e client in fase di esecuzione.
NCache scalabilità di runtime per server e client cache.
 

Configurazione dinamica

Come menzionato nelle sezioni Connessioni client dinamiche e Clustering dinamico, NCache Fornisce la configurazione dinamica della cache e dei client. Questa sezione ha lo scopo di illustrare il funzionamento di questa configurazione runtime.

  • - Configurazione della cache: Quando una cache viene creata tramite gli strumenti di amministrazione, le informazioni di configurazione vengono copiate su tutti i server cache noti in quel momento. Analogamente, qualsiasi nuovo server aggiunto al cluster in fase di esecuzione riceve l'intera configurazione aggiornata della cache e la copia sul proprio disco locale.
  • - Modifiche di configurazione applicate a caldo: È possibile modificare alcune delle configurazioni della cache in fase di esecuzione tramite "Applicazione a caldo". Ad esempio, quando si modifica il Dimensione della cache o abilitando CompressioneIn questo caso, le informazioni di configurazione aggiornate vengono propagate a tutti i server cache in fase di esecuzione e salvate sui rispettivi dischi. Parte di queste informazioni viene inviata anche a tutti i client, se necessario.
  • - Mappa di distribuzione (cache partizionata/partizione-replica): Viene creato all'avvio di una cache e viene poi copiato su tutti i server e client della cache. Questa mappa di distribuzione contiene informazioni su quali bucket (su un totale di 1000 bucket nella cache in cluster) si trovano in quale partizione.
 

Failover della connessione all'interno del cluster

Tutti i server cache del cluster sono connessi tramite TCP. Inoltre, ogni server cache è connesso a tutti gli altri server cache del cluster, inclusi eventuali nuovi server aggiunti in fase di esecuzione. NCache fornisce vari modi per garantire che tutte le connessioni all'interno del cluster siano mantenuto in vita nonostante l'interruzione della connessione. Questi errori si verificano solitamente a causa di un problema di rete dovuto a router, firewall o a un problema con la scheda di rete/driver di rete.

  • - Tentativi di connessione: Se la connessione tra due server cache si interrompe, NCache tenta automaticamente più tentativi per ristabilire questa connessione. Questi riprova si verificano per la durata del periodo di timeout specificato dall'utente.
  • - Battito cardiaco Keep-Alive: NCache Dispone inoltre di una funzionalità che consente a ciascun server cache di inviare continuamente piccoli pacchetti di dati come heartbeat a tutti gli altri server. Questo garantisce che, in caso di problemi con il socket di rete, i server cache lo rilevino e lo risolvano tramite nuovi tentativi.
  • - Server parzialmente connessi: In alcuni casi, i problemi di rete possono suddividere il cluster in sottocluster (un "Cervello diviso"). NCache rileva e risolve automaticamente questo problema una volta ripristinata la rete, decidendo quale cluster conserva i propri dati e richiedendo agli altri di ricongiungersi.
 

Failover della connessione con i client

Il failover della connessione nei client è simile ai tentativi di failover del cluster, agli heartbeat e alla riconnessione automatica ai server funzionanti.

  • - Tentativi di connessione: In termini di failover, i tentativi di connessione sono gli stessi a livello di cluster e client. Tuttavia, se una connessione tra un client e i server cache si interrompe, NCache il client lo fa automaticamente più tentativi di connessione per stabilire questa connessione. Questi tentativi si verificano per tutta la durata del periodo di timeout. Se non è possibile stabilire una connessione, viene generata un'eccezione all'applicazione client affinché possa gestirla.
  • - Battito cardiaco Keep-Alive: Uguale a Connection Failover all'interno del cluster.
  • - Client parzialmente connessi (cache partizionata/replica della partizione): A volte, nonostante i tentativi, la connessione non viene ripristinata in tempo, quindi il client presume che gli altri server siano irraggiungibili, anche se non lo sono. Pertanto, nel caso di una cache partizionata/partizionata-replica, interagisce con altri server per leggere o scrivere tutti i dati, anche se la sua mappa di distribuzione gli indica che il server con cui non può comunicare ha i dati. In questo caso, l'altro server cache funge da intermediario per il corretto funzionamento.
 
 

Topologie di memorizzazione nella cache (scalabilità lineare)

NCache Offre una varietà di topologie di caching per consentire una scalabilità lineare mantenendo al contempo la coerenza e l'affidabilità dei dati. L'obiettivo è supportare applicazioni che vanno da piccole cache a due server a grandi cluster con centinaia di server. Una topologia di caching è essenzialmente una strategia di archiviazione e replica dei dati e di connessione client in una cache clusterizzata che si estende su più server cache.

 

Dati di riferimento e dati transazionali

I dati di riferimento non cambiano molto frequentemente e vengono memorizzati nella cache per soddisfare le richieste più frequenti ed evitare costosi accessi al database, aggiornandoli solo occasionalmente. I dati transazionali, invece, sono dati che cambiano molto frequentemente e possono essere aggiornati con la stessa frequenza con cui vengono letti.

All'inizio, le cache venivano utilizzate principalmente per i dati di riferimento, perché i dati che cambiavano frequentemente diventavano obsoleti e non sincronizzati con i dati più recenti nel database. Tuttavia, NCache ora fornisce funzionalità molto potenti che consentono alla cache di mantenere sincronizzati i dati memorizzati nella cache con il database.

Tutti NCacheLe topologie di caching di sono adatte ai dati di riferimento, ma alcune sono particolarmente utili per i dati transazionali. Pertanto, è necessario determinare quante letture e quante scritture verranno eseguite per capire quale topologia sia la più adatta alle proprie esigenze. Inoltre, alcune topologie di caching non sono molto scalabili, soprattutto per gli aggiornamenti, quindi è bene tenerne conto.

Di seguito è riportato un elenco di topologie di memorizzazione nella cache insieme al loro impatto sulle letture rispetto alle scritture.

  • - Cache partizionata (nessuna replica): Questa è la topologia più veloce, ma non replica i dati, quindi si verifica una perdita di dati se un server cache si blocca.
  • - Cache di replica partizione (Più popolare): Questa topologia è estremamente veloce sia in lettura che in scrittura. Tuttavia, replica anche i dati per garantire l'affidabilità senza compromessi. La migliore combinazione di velocità/scalabilità e affidabilità dei dati.
  • - Cache replicata: Ottimo per ambienti più piccoli. Ogni server mantiene un backup completo della cache, garantendo elevata affidabilità dei dati e tolleranza agli errori. Superveloce e scalabile linearmente per le letture. Moderatamente veloce per le scritture in un cluster a 2 nodi, ma non scalabile con l'aggiunta di altri server perché le scritture vengono eseguite in modo sincrono su tutti i server della cache.
  • - cache specchiata: Questa topologia è molto adatta per ambienti più piccoli. Offre operazioni di scrittura più veloci rispetto alla cache replicata per reti attive/passive a 2 nodi. Tuttavia, non è scalabile oltre questo limite.
  • - Cache cliente: Ottimo per casi d'uso ad alta intensità di lettura con tutte le topologie di caching. Consente di raggiungere la velocità InProc con una cache distribuita.
Topologia Leggi Perf. Scrivi Perf. L’affidabilità Miglior caso d'uso
Partizione-Replica Estremo Alto Alto Dati transazionali / E-commerce
Partitioned Estremo Estremo Nona Dati transitori / Prestazioni massime
replicato Estremo Moderato Alto Piccoli cluster / Lettura intensiva
Speculare Alto Alto Alto Configurazioni attive/passive a 2 nodi
Cache cliente Velocità in-process Moderato Alto (sincronizzato) Caching L1 locale/ad alta intensità di lettura
 

Cache partizionata

La cache partizionata è la topologia di caching più veloce e scalabile, sia in lettura che in scrittura. È progettata per cluster di grandi dimensioni e offre letture e scritture veloci anche in caso di picchi di carico. Tuttavia, non replica i dati. Pertanto, non è disponibile alcun backup in caso di guasto di un server.

NCache Topologia di cache partizionata con distribuzione dei dati su più nodi server.
NCache Cache partizionata per scalabilità e distribuzione lineari.

Ecco alcune caratteristiche della cache partizionata.

  • - Partizioni dinamiche: La cache è suddivisa in partizioni in fase di esecuzione, con ogni server cache che ne ha una. Ci sono un totale di 1000 bucket per cache in cluster, distribuiti uniformemente su tutte le partizioni. In sostanza, l'aggiunta/rimozione di un server cache comporterà la creazione/eliminazione di partizioni in fase di esecuzione. L'assegnazione dei bucket di partizione non cambia quando i dati vengono aggiunti alla cache. Cambia invece solo quando le partizioni vengono aggiunte o eliminate o quando i dati vengono carico bilanciatoQuesto ribilanciamento si riferisce al processo di trasferimento dello stato che sposta i bucket e i relativi dati nelle partizioni di destinazione
  • - Mappa di distribuzione: Il cluster di cache crea una mappa di distribuzione che contiene informazioni su quali bucket sono presenti in quali partizioni. La mappa di distribuzione viene aggiornata ogni volta che si verifica un trasferimento di stato. La mappa di distribuzione viene propagata a tutti i server e client. I client la utilizzano per determinare con quale server di cache comunicare per qualsiasi operazione di lettura/scrittura.
  • - Bilanciamento dinamico dei dati: Poiché tutti i bucket sono basati su HashMap e i dati vengono archiviati in base a un algoritmo di hashing applicato alle chiavi, alcuni bucket possono contenere più dati di altri, a seconda delle chiavi utilizzate. Se questo squilibrio supera una soglia configurabile, NCache sposta automaticamente i contenitori per riequilibrare il carico.
  • - I client si connettono a TUTTE le partizioni: I client si connettono a tutti i server cache in modo da poter leggere o scrivere dati direttamente dal server in un'unica richiesta. Se la connessione di un client con un server cache si interrompe, il client chiede a uno degli altri server di leggere o scrivere un elemento memorizzato nella cache presente sul server a cui non può accedere. E quel server aiuta il client a raggiungere questo obiettivo.
 

Cache di replica partizione

NOTA: tutto quanto menzionato in Cache partizionata è valido anche qui.

Proprio come Cache partizionataLa cache Partition-Replica è una topologia di caching estremamente veloce e linearmente scalabile sia per le operazioni di lettura che di scrittura. È pensata per cluster di cache di grandi dimensioni e le prestazioni di lettura e scrittura rimangono molto buone anche in caso di picchi di carico. Inoltre, la cache Partition-Replica replica anche i dati. Pertanto, non si verifica alcuna perdita di dati anche in caso di inattività di un server cache.

La cache di replica delle partizioni è la nostra topologia di memorizzazione nella cache più popolare perché ti offre il meglio di entrambi i mondi: prestazioni/scalabilità lineare e affidabilità dei dati.

NCache Topologia partizione-replica che mostra partizioni attive e repliche passive per un'elevata disponibilità.
NCache Cache di replica delle partizioni per affidabilità dei dati e scalabilità lineare.

Di seguito sono riportate alcune delle caratteristiche di Partition-Replica Cache.

  • - Partizioni dinamiche: Uguale alla cache partizionata.
  • - Repliche dinamiche: Quando le partizioni vengono create o eliminate in fase di esecuzione, vengono create o eliminate anche le relative repliche. Le repliche si trovano sempre su un server cache diverso e per ogni partizione esiste una sola replica.
  • - Replica asincrona: Per impostazione predefinita, la replica da una partizione alla sua replica è asincrona. Le scritture client (aggiunte/aggiornate/eliminate) raggiungono la partizione e vengono messe in coda per la replica asincrona in blocco sulla replica. Questo migliora le prestazioni, ma comporta un leggero rischio di perdita di dati nel caso in cui una partizione si arresti e non tutti gli aggiornamenti siano stati replicati sulla replica. Tuttavia, questo è estremamente raro.
  • - Sincronizzazione della replica: Se i dati sono molto sensibili (ad esempio, dati finanziari) e non ci si può permettere di avere dati obsoleti, è possibile scegliere l'opzione Replica Sincronizzata nella configurazione. Se selezionata, tutte le operazioni di scrittura vengono eseguite in modo sincrono sia sulla partizione che sulla replica finché non vengono considerate completate. In questo modo, se l'operazione fallisce sulla replica, fallisce anche sulla partizione. Pertanto, è garantito che tutti i dati nella cache (sia nella partizione che nella replica) siano sempre coerenti. Tuttavia, questa opzione ha un impatto sulle prestazioni, poiché è più lenta della replica asincrona.
  • - Mappa di distribuzione: Uguale alla cache partizionata.
  • - Bilanciamento dinamico dei dati (partizioni e repliche): Uguale alla cache partizionata. Tuttavia, nella cache partizione-replica, il bilanciamento dei dati avviene anche nelle repliche quando le partizioni sono bilanciate.
  • - I client si connettono a TUTTE le partizioni: Uguale alla cache partizionata. Tuttavia, nella cache partizionata-replica, i client comunicano solo con le partizioni e non con le loro repliche. Questo perché le repliche sono passive e le partizioni comunicano con le loro repliche solo quando replicano i dati su di esse.
 

Cache replicata

La cache replicata garantisce l'affidabilità dei dati attraverso la replica su due o più server cache. È molto veloce e scalabile in lettura, ma non è scalabile in scrittura perché è sincrona con tutti i server del cluster. Per un cluster a 2 nodi, le scritture sono più veloci del database, ma non quanto una cache di replica delle partizioni. Per cluster con 3 o più server, le prestazioni di scrittura peggiorano e alla fine diventano costose.

NCache Topologia di cache replicata con aggiornamenti sincroni su tutti i nodi attivi.
NCache Cache replicata per elevata affidabilità dei dati e scalabilità di lettura.

Di seguito sono riportate alcune delle caratteristiche della cache replicata.

  • - Nodi replicati dinamici: È possibile aggiungere o rimuovere server cache in fase di esecuzione da una cache esistente senza arrestare la cache o l'applicazione. Il server appena aggiunto crea una copia (Replica) dell'intera cache su se stesso. Il server rimosso aggiorna l'appartenenza al cluster e tutti i suoi client vengono spostati su altri server.
  • - Intera cache su ciascun nodo: L'intera cache viene copiata su ogni server del cluster.
  • - Le letture sono scalabili: Le letture sono superveloci e scalabili quando si aggiungono più server. Tuttavia, l'aggiunta di più server non aumenta la dimensione della cache, poiché il nuovo server aggiunto è solo un'altra copia dell'intera cache.
  • - Le scritture sono sincrone: Le scritture sono molto veloci per un cluster a 2 nodi e più veloci del database. Tuttavia, le scritture sono sincrone, il che significa che ogni operazione di scrittura non viene completata finché tutti i server cache non vengono aggiornati in modo sincrono. Pertanto, le scritture non sono veloci quanto altre topologie.
  • - Il client si connette a un solo server: Ogni client cache si connette a un solo server nel cluster in base a un algoritmo di bilanciamento del carico determinato dai server cache. Se questo server cache si blocca, il client si connette al server successivo nell'elenco. È anche possibile specificare manualmente il server a cui connettersi nel file di configurazione della cache se non si desidera utilizzare il bilanciamento del carico.
 

cache specchiata

La cache mirrorata è un cluster di cache attivo/passivo a 2 nodi, pensato per ambienti più piccoli. Garantisce l'affidabilità dei dati tramite replica/mirroring asincrono dal nodo attivo al nodo passivo. È molto veloce sia in lettura che in scrittura (infatti, le sue operazioni di scrittura sono più veloci della cache replicata), ma non è scalabile oltre questo cluster attivo/passivo a 2 nodi.

NCache Topologia di cache speculare con nodi attivi/passivi e mirroring asincrono.
NCache Cache speculare per alta disponibilità attiva/passiva a 2 nodi.

Di seguito sono elencate alcune delle caratteristiche di Mirrored Cache.

  • - 1 server attivo e 1 passivo: La cache mirror ha solo due server. Uno è attivo e l'altro è passivo. Entrambi dispongono di una copia dell'intera cache. Se il server attivo si disattiva, il server passivo diventa automaticamente attivo. E, se il server attivo precedentemente disattivato si riattiva, viene trattato come server passivo, a meno che non si modifichi questa designazione tramite gli strumenti di amministrazione in fase di esecuzione.
  • - Connessioni dei clienti con supporto failover: Ogni client della cache si connette solo al server attivo nel cluster per eseguire le operazioni di lettura e scrittura. Se questo server attivo si disattiva, tutti i client si connettono automaticamente al server passivo che è diventato attivo nel frattempo. Questo supporto di failover garantisce che la cache mirrorata sia sempre attiva e funzionante, anche in caso di interruzione di un server.
  • - Mirroring asincrono: Tutte le scritture effettuate sul server attivo vengono replicate/specchiate in modo asincrono sul server passivo. Questo garantisce che il server passivo sia sempre sincronizzato con i dati più recenti nel caso in cui il server attivo si interrompa e il server passivo debba tornare attivo. Il mirroring asincrono si traduce anche in prestazioni più elevate, poiché più scritture vengono eseguite come operazione BULK sul server passivo.
Caratteristica Partitioned Partizione-Replica replicato Speculare
Dimensione massima del cluster Centinaia di nodi Centinaia di nodi Cluster più piccoli 2 nodi (attivo/passivo)
Tipo di replica Nona Asincrono/Sincronizzato Sincrono asincrono
Sicurezza dei dati Basso (nessun backup) Alto (replica) Alto (backup completo) Alto (Specchio)
Beneficio primario Massime prestazioni Scalabilità + Affidabilità Scalabilità ad alta intensità di lettura Disponibilità su piccola scala
 

Cache client (velocità InProc)

La cache client è locale rispetto al server web/app e si trova molto vicina all'applicazione, consentendo di memorizzare nella cache i dati letti dalla cache distribuita (indipendentemente dalla topologia di memorizzazione nella cache). Pur essendo locale rispetto all'applicazione, la cache client non è autonoma. È invece sempre sincronizzata con la cache clusterizzata. Questo garantisce che i dati nella cache client non siano mai obsoleti.

Si può considerare questa funzionalità come una "cache su un'altra cache" e migliora ulteriormente le prestazioni e la scalabilità dell'applicazione. Utilizzando la cache client in modalità InProc, è possibile raggiungere la velocità di InProc. NCache Fornisce due varianti di Client Cache: Regular e Full-Data. Ognuna è progettata per migliorare le prestazioni riducendo le chiamate di rete e mantenendo la sincronizzazione con la cache clusterizzata.

Cache client normale

La cache client regolare funge da cache locale (L1) sulla macchina client, mantenendo un sottoinsieme di dati a cui si accede frequentemente vicino all'applicazione. Ciò riduce i ripetuti accessi di rete alla cache clusterizzata (L2). Per mantenere la coerenza, la cache client rimane sincronizzata con la cache clusterizzata ricevendo notifiche di modifica. Poiché non contiene il set di dati completo, tutte le query vengono comunque eseguite sulla cache clusterizzata (L2).

Cache client con dati completi

La cache client Full Data fa un ulteriore passo avanti, memorizzando nella cache interi set di dati localmente sul computer client. Offre i seguenti vantaggi e opzioni:

  • - Memorizza nella cache i set di dati completi localmente: Memorizza nella cache tutte le voci delle classi .NET selezionate, rendendo immediatamente disponibili i set di dati completi.
  • - Velocità quasi in-process: La cache client con dati completi consente operazioni di lettura più rapide e l'esecuzione di query SQL interamente sulla cache client, poiché il set di dati completo è presente localmente.
  • - Sincronizzazione con cache cluster: Rimane completamente sincronizzato con la cache clusterizzata per garantire la coerenza.
  • - Applicazione rigorosa delle query: Questa applicazione garantisce che le query vengano eseguite solo quando il set di dati completo è disponibile localmente. Se il set di dati è parzialmente caricato, la query fallisce immediatamente senza ricorrere alla cache cluster.
  • - Letture locali rigorose: Questo forza tutte le operazioni di lettura a essere eseguite esclusivamente dalla cache client. Se una chiave non viene trovata localmente, restituisce un cache miss invece di recuperarla dalla cache cluster.

Pur essendo locale per l'applicazione, una cache client non è autonoma. Al contrario, è sempre sincronizzato con la cache del cluster. Ciò garantisce che i dati nella cache del client non siano mai obsoleti.

NCache Cache client (L1) sincronizzata con cache cluster (L2) per la velocità InProc.
NCache Cache client per prestazioni InProc inferiori al millisecondo.

Di seguito sono elencate alcune delle caratteristiche di Mirrored Cache.

  • - Ottimo per casi di lettura intensiva: La cache client è ideale per casi d'uso ad alta intensità di lettura. Tuttavia, se il numero di scritture è uguale a quello delle letture, la cache client risulta effettivamente più lenta perché un'operazione di scrittura comporta l'aggiornamento dei dati in due punti.
  • - Velocità più elevata come una cache locale (InProc/OutProc): Una cache client può essere presente all'interno del processo applicativo (modalità InProc) o localmente sul server web/app (modalità OutProc). In entrambi i casi, aumenta significativamente le prestazioni dell'applicazione rispetto al semplice recupero dei dati dalla cache clusterizzata. La modalità InProc consente di memorizzare nella cache gli oggetti nell'"heap applicativo", ottenendo una "velocità InProc" che nessuna cache distribuita può eguagliare.
  • - Non una cache autonoma: Una cache client può essere una cache locale, ma non è una cache autonoma. È sincronizzata con la cache clusterizzata. Ciò significa che se un altro client aggiorna i dati nella cache clusterizzata presenti nella cache client, la cache clusterizzata notifica alla cache client di aggiornarsi con la copia più recente di tali dati. E questo avviene in modo asincrono ma immediato.
  • - Sincronizzazione ottimista/pessimista: Per impostazione predefinita, la cache client utilizza la sincronizzazione ottimistica, il che significa che NCache Il client presuppone che tutti i dati presenti nella cache client siano la copia più recente. Se la cache client non contiene dati, il client li recupera dalla cache clusterizzata, li inserisce nella cache client e li restituisce all'applicazione client. La sincronizzazione pessimistica significa che il client della cache controlla prima la cache clusterizzata per verificare se contiene una versione più recente di un elemento memorizzato nella cache. In tal caso, il client la recupera, la inserisce nella cache client e la restituisce all'applicazione client. In caso contrario, restituisce qualsiasi dato presente nella cache client.
  • - Plug-in senza alcuna modifica del codice: L'utilizzo della cache client non comporta alcuna modifica al codice dell'applicazione. È invece necessaria una semplice modifica alla configurazione.

Cosa fare dopo?

Domande frequenti (FAQ)

NCache ottiene una scalabilità lineare utilizzando una mappa di distribuzione da 1000 bucket per partizionare i dati su più nodi server, consentendo al cluster di gestire carichi di transazioni maggiori man mano che viene aggiunto nuovo hardware in fase di esecuzione.

NCache utilizza un'architettura peer-to-peer al 100% in cui ogni server è un peer; se un nodo (incluso il coordinatore del cluster) si guasta, i nodi rimanenti eleggono automaticamente un nuovo coordinatore e ribilanciano il cluster tramite heartbeat basati su TCP per mantenere il 100% di uptime.

Sebbene entrambi forniscano scalabilità lineare, la cache partizionata offre la velocità più elevata senza ridondanza dei dati, mentre la cache partizionata-replica è la scelta più diffusa perché bilancia prestazioni estreme con elevata disponibilità creando repliche passive di ciascuna partizione.

NCache risolve gli scenari Split-Brain utilizzando un algoritmo intelligente di rilevamento e ripristino che riconcilia automaticamente i sottocluster divergenti e ripristina l'integrità dei dati senza richiedere un intervento manuale.

An NCache La cache client (L1) garantisce una velocità InProc inferiore al millisecondo memorizzando un sottoinsieme di dati a cui si accede frequentemente direttamente sul server applicativo, riducendo drasticamente la latenza di rete nella cache clusterizzata (L2).

Sì, NCache supporta il clustering dinamico, che consente l'espansione o la rimozione dell'appartenenza al server senza tempi di inattività, aggiornando e propagando automaticamente la mappa di distribuzione del cluster a tutti i client in tempo reale.

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