Un incubo comune tra sviluppatori e architetti di software è il loro unico server Web/origine dati che si arresta in modo anomalo, perdendo migliaia di client, applicazioni e dati preziosi connessi. Con l'aiuto di un livello di cache distribuito con bilanciamento del carico come NCache puoi rendere il livello dell'applicazione altamente scalabile e disponibile. Con l'aumento del carico delle transazioni, puoi aggiungere più server. L'architettura distribuita garantisce l'assenza di un singolo punto di errore.
NCache è un in-memoria distribuito archivio dati che fornisce prestazioni ottimali per le tue applicazioni. Il NCache grappolo è auto-guarigione e dinamico. Contiene nodi che bilanciano automaticamente il carico tra loro senza l'intervento dell'utente ad ogni aggiornamento del cluster.
NCache Dettagli NCache Docs Replica partizionata
Questo blog ti offre un rapido tour di come NCache offre il scalabilità e prestazioni mantenendo il 100% di uptime. Per la comprensione NCache architettura in dettaglio, puoi dare un'occhiata a questo video:
Mantenimento dell'elevata disponibilità in NCache Cluster
NCacheL' architettura distribuita e replicata garantisce il 100% uptime anche se un nodo si interrompe in modo imprevisto. NCacheL'architettura peer-to-peer e il rilevamento runtime di cluster e client senza l'intervento dell'utente garantiscono una disponibilità così elevata. Inoltre, NCache fornisce un supporto intelligente per il failover, in modo che il cluster rimanga sempre disponibile per tutti i client connessi.
Architettura peer-to-peer
NCache fornisce clustering dinamico della cache con una architettura peer-to-peer dove non c'è un singolo punto di errore. Un cluster di cache ha server interconnessi e contiene un coordinatore (nodo server più senior) che gestisce le appartenenze al cluster. Se il coordinatore non funziona, il ruolo passa al server più anziano successivo nel cluster. Non garantisce alcun singolo punto di errore nella gestione dell'appartenenza al cluster.
Scoperta del runtime all'interno di cluster e client
Grappolo:
Una volta avviato, un server deve essere a conoscenza di almeno un altro server nel cluster. Il server contiene un elenco di più server cache e tenta di connettersi a chiunque di essi. Una volta connesso a un server, chiede a quel server informazioni sul coordinatore del cluster e chiede al coordinatore di aggiungerlo all'elenco dei membri del cluster.
Il coordinatore aggiunge questo nuovo server al cluster in fase di esecuzione e informa gli altri server connessi che un nuovo server si è unito al cluster. Informa inoltre il nuovo server su tutti i membri del cluster. Il nuovo server stabilisce quindi una connessione TCP con tutti i server del cluster.
Cliente:
Una volta che il client si connette a un server cache, riceve le seguenti informazioni da quel server in fase di esecuzione:
- Informazioni sull'appartenenza al cluster
- Informazioni sulla topologia di memorizzazione nella cache
- Mappa di distribuzione dei dati
Il client utilizza queste informazioni per determinare a quali server di cache connettersi e come accedere alla cache in base alla topologia di memorizzazione nella cache.
Scoperta del runtime all'interno di cluster e client
In NCache, il rilevamento di cluster e client durante il runtime avviene nei seguenti modi:
Grappolo:
Poiché un cluster è una raccolta di nodi, una volta avviato un server, deve essere a conoscenza di almeno un altro server nel cluster. Il server contiene un elenco di più server cache e tenta di connettersi a chiunque di essi. Una volta connesso a un server, chiede a quel server informazioni sul coordinatore del cluster e chiede al nodo del coordinatore di aggiungerlo all'elenco di appartenenza del cluster.
Il coordinatore aggiunge questo nuovo server al cluster in fase di esecuzione e informa gli altri server connessi che un nuovo server si è unito al cluster. Aggiorna anche il nuovo server su tutti i membri del cluster. Il nuovo server stabilisce quindi a Connessione TCP con tutti i server del cluster.
Cliente:
Una volta che il client si connette a un server cache, riceve le seguenti informazioni da quel server in fase di esecuzione:
- Informazioni sull'appartenenza al cluster
- Informazioni sulla topologia di memorizzazione nella cache
- Mappa di distribuzione dei dati
Il client utilizza queste informazioni per determinare a quali server di cache connettersi e come accedere alla cache in base a topologia di memorizzazione nella cache.
Supporto per il failover
Il NCache cluster è autorigenerante, fornisce supporto per il failover all'interno del cluster e per i client se un server viene aggiunto o rimosso in fase di runtime.
- Supporto per il failover del cluster: Il cluster si riorganizza automaticamente aggiornando le sue connessioni agli altri server ad ogni aggiornamento del cluster.
- Supporto failover client: I client si connettono automaticamente a un altro server nel cluster in caso di disconnessione del server. Allo stesso modo, se c'è un'aggiunta di un server, i client si aggiornano e possono connettersi al nuovo server.
Per maggiori dettagli sulle funzionalità di alta disponibilità, visita il nostro blog Alta disponibilità promessa con NCache.
Topologie di memorizzazione nella cache Clustering dinamico di autoguarigione NCache Architettura
Modalità di manutenzione
NCache supporta la modalità di manutenzione per il suo Partizionato di Replica topologia. Sebbene la stessa topologia POR garantisca un'elevata disponibilità con una replica di ciascun nodo. Tuttavia, nel caso in cui sia necessario eseguire un aggiornamento o eseguire un aggiornamento della patch sulla cache, è necessario arrestare ogni nodo del cluster uno per uno. Tuttavia, l'arresto di un nodo cache attiva a trasferimento statale all'interno dell'intero cluster di cache con conseguente uso eccessivo di risorse come rete e CPU, con un impatto drastico sulla disponibilità della cache.
I NCache la modalità di manutenzione risolve questo problema offrendo la possibilità di arrestare un nodo per la manutenzione. Una volta che un nodo è fermato, informa il cluster di interrompere qualsiasi trasferimento di stato per un periodo di timeout specifico. Quando un cluster viene sottoposto a manutenzione, la replica di questo nodo fungerà da nodo attivo e servirà le richieste di dati del client. Una volta che il nodo stesso si unisce nuovamente al cluster, richiede i dati dal relativo nodo di replica. In sostanza, la modalità di manutenzione fa risparmiare al tuo cluster il costo di un costoso processo di trasferimento dello stato.
NCache Dettagli NCache Docs Modalità di manutenzione NCache Docs
Raggiungere la scalabilità di runtime di NCache Cluster
Dal NCache memorizza i tuoi dati insieme a fornire funzionalità avanzate come Messaggistica Pub/Sub ed esecuzione della query, puoi aspettarti di imbatterti in un limite di memoria o di calcolo se tutte le tue transazioni si trovano su un solo server. Ecco perché NCache fornisce un ridimensionamento lineare senza interruzioni per gestire richieste crescenti al secondo e archiviare più dati.
NCache Web Manager rende il ridimensionamento del tuo ambiente semplice come fare clic sui pulsanti e voilà, hai un cluster dinamico con nodi aggiuntivi senza interrompere i tuoi client. La seguente GIF mostra quanto sia semplice ridimensionare il cluster in modo dinamico NCache:
Operazioni parallele
NCache ha una cluster dinamico che consente ai client di ricevere i dati richiesti in un solo hop perché i client vengono gestiti in modo efficace all'interno del cluster senza alcun intervento da parte dell'utente. Inoltre, le operazioni client vengono inviate ed eseguite in parallelo su tutti i nodi. I risultati di ciascun nodo vengono compilati in un unico risultato, rendendo le operazioni scalabili. Migliora anche le prestazioni delle transazioni a causa del parallelismo.
pipelining
Con tubazioni, NCache riduce il sovraccarico di rete combinando più operazioni client inviate in una chiamata TCP al server. Allo stesso modo, il client riceve i risultati dell'operazione in un singolo blocco in una chiamata. Aiuta a scalare le operazioni.
Raggruppamento di oggetti
Con il raggruppamento di oggetti, il NCache il server raggruppa gli oggetti e li riutilizza per impedire di richiamare ripetutamente Garbage Collector. La raccolta dei rifiuti è un'attività ad alta intensità di prestazioni, quindi ridurre la necessità di chiamare il GC si traduce in prestazioni e scalabilità più elevate dell'ambiente.
Cache cliente
NCache offre il cache del cliente, una cache in cima alla cache, che risiede dove risiede l'applicazione. Poiché la cache del client si trova tra l'applicazione e la cache in cluster, viene sincronizzata automaticamente e migliora le prestazioni, soprattutto per le operazioni di lettura. L'uso di una cache client riduce il sovraccarico della rete.
Per maggiori dettagli puoi consultare il blog: Architettura di scalabilità in NCache - Un'intuizione
NCache Dettagli Operazioni lato client Pipeline NCache
Conclusione
NCache, essendo un nativo .NET cache distribuita soluzione, si adatta perfettamente allo stack di applicazioni. Aumenta enormemente le prestazioni grazie al pool di oggetti, alle operazioni parallele e alla cache del client che si trova accanto all'applicazione. Oltre ad essere scalabile, mantiene anche il 100% di uptime in ogni momento per garantire l'elevata disponibilità di dati e clienti.