Client cache distribuita
L'impiego di NCache copre una varietà di casi d'uso, a partire da un semplice archivio di valori-chiave fino a quelli avanzati Ricerca SQL ed Pub / Sub. Le applicazioni client includono, a titolo esemplificativo, applicazioni console, servizi Windows, applicazioni Web e servizi Web. Le librerie client (SDK) includono .NET, Java e NodeJS. Inoltre, viene fornito anche il supporto per Python e Scala. Utilizzando l'SDK pertinente, le applicazioni client possono connettersi con una o più cache.
Note:
Questa funzionalità è disponibile anche in NCache Professional.
Metodi di comunicazione per il client cache distribuita
Google Protobuf come formato di scambio dati: Il client comunica con la cache distribuita tramite un socket TCP persistente. NCache usi del cliente Buffer del protocollo di Google (Protobuf) come protocollo per comunicare con il server cache. L'uso di Protobuf fornisce flessibilità alle versioni client precedenti di NCache, per comunicare con le nuove versioni del server cache.
Esecuzione di richieste parallele basate su richiesta-risposta: NCache il client supporta il multithreading. Tali applicazioni possono effettuare richieste parallele alla cache. NCache segue il protocollo di risposta richiesta basato su RequestId nelle comunicazioni client-server, in cui a ogni richiesta viene assegnato un RequestId univoco. Nonostante abbia una singola connessione TCP tra il client cache e un server cache, il client può inviare più richieste con i propri RequestId univoci al server cache senza attendere la risposta delle richieste già inviate. Quindi ogni richiesta è veramente indipendente. NCache il server supporta anche l'esecuzione di richieste parallele. Questa architettura consente alle applicazioni di eseguire più operazioni parallele dal client ai server di cache senza operazioni in attesa l'una dell'altra, fornendo così massime prestazioni e scalabilità.
Richiedi Pipelining: pipelining si riferisce alla combinazione e all'invio di più richieste in un'unica operazione socket (I/O). Ogni volta che le applicazioni eseguono operazioni di I/O, si verifica il passaggio dalla modalità utente a kernel, un'operazione costosa. pipelining evita questo costo eseguendo la stessa attività in un numero ridotto di operazioni di I/O. pipelining aumenta notevolmente le prestazioni dell'applicazione. NCache supporta il pipelining sia sul lato client che su quello server.
Consapevolezza della topologia della cache: NCache il client riconosce la topologia della cache. Quando un client cache si connette al primo server cache, recupera i metadati della cache, inclusa la sua topologia. Il modo in cui un client deve stabilire la connettività con i server cache e il modo in cui devono essere eseguite le operazioni client dipende dalla topologia sottostante della cache. Ad esempio, i dati vengono distribuiti tra diversi server cache in Partitioned ed Partizione-Replica topologie. Pertanto, il client stabilisce una connessione TCP con ciascun server nel cluster di cache e recupera le mappe di distribuzione dei dati più recenti. Il client esegue direttamente le operazioni di lettura e scrittura sulla partizione contenente i dati interessati. Allo stesso modo, ogni server in replicato la topologia contiene lo stesso insieme di dati. Pertanto, il client si connette solo con un singolo server cache.
Gestione degli errori di connessione in modo continuo: I NCache il client mantiene una connessione permanente con i server di cache. Se questa connessione si interrompe a causa di problemi di rete, il file NCache il client è dotato di un meccanismo di ristabilimento della connessione in background. Questo meccanismo stabilisce automaticamente la connettività con il server guasto, non appena viene ripristinata la connettività di rete tra il client e il server. E tutto ciò avviene senza problemi, senza l'intervento dell'applicazione client.
Serializzazione dei dati: I dati dell'applicazione vengono sottoposti al processo di serializzazione prima di passare al server cache. NCache supporta entrambi Serializzazione binaria e JSON. È possibile scegliere uno dei formati di serializzazione al momento della configurazione della cache. Il client cache recupera il formato di serializzazione dal server cache al momento della connessione alla cache. Quindi serializza i dati dell'applicazione in base al formato di serializzazione.
Crittografia dei dati: La crittografia dei dati dell'applicazione è una funzionalità opzionale che è possibile abilitare. Se crittografia è configurato, il client crittografa i dati dell'applicazione dopo che è stato serializzato. Il client recupera la configurazione relativa alla crittografia dal server della cache al momento della connessione alla cache.
Compressione dati: Compressione dei dati dell'applicazione può aiutare a ridurre le dimensioni della cache se i dati sono davvero grandi. I dati vengono prima serializzati, quindi crittografati (se la crittografia è abilitata) e infine compressi dal client cache prima di essere inviati alla cache. Il client della cache recupera la configurazione relativa alla compressione dal server della cache al momento della connessione alla cache.
Connessione con la cache
Il client cache necessita delle informazioni del server per connettersi alla cache. Le informazioni sul server possono essere fornite tramite il file di configurazione del client (client.ncconf ) o attraverso Opzioni di connessione cache. Il client scorre l'elenco dei server cache fornito e tenta di connettersi con la cache in esecuzione sul server. Se l'istanza della cache non è in esecuzione su un determinato server, si sposta sul server successivo fornito nell'elenco. La connessione del client di solito passa attraverso i seguenti passaggi:
Il client stabilisce prima una connessione TCP con NCache servizio finito porto 9800
Il client richiede quindi l'elenco completo dei server cache configurati. In questo modo, ha un elenco aggiornato dei server cache.
Il client invia quindi alla cache una richiesta di inizializzazione al server, che include il nome della cache e le credenziali di sicurezza nel caso la sicurezza della cache è abilitata. Ogni cache viene eseguita in un processo separato. Se hai .NET Framework installazione basata su NCache sul lato server, quindi il servizio trasferisce senza problemi la connessione client al processo della cache e il client si connette correttamente alla cache. In .NET Core o installazioni .NET 6 e successive, il servizio condivide le informazioni sulla porta con il client su cui la cache è in ascolto per le connessioni. Il client stabilisce quindi una connessione diretta con il processo di cache e invia una richiesta di inizializzazione.
Note:
NCache configura automaticamente il firewall per aprire tutte le porte richieste su Windows. Tuttavia, è necessario aprire NCache porte su Linux di Configurazione del firewall.
Se il client si sta connettendo con a Cache replicata e il bilanciamento del carico del client è abilitato, quindi il client richiede un server con il minor numero di client ad esso collegati. Quindi si connette con il server meno caricato.
Se il client si sta connettendo con a Partitioned o Partizione-Replica cache, quindi richiede le mappe di distribuzione per i server. Alla ricezione delle mappe, stabilisce connessioni con i server cache presenti nella mappa di distribuzione.
Il client richiede anche diverse configurazioni della cache come
- Soglia di compressione ed formato di serializzazione della cache
- Chiavi di crittografia sono condivisi tra il client e il server cache
- Indici di query configurati e tipi compatti registrati, ecc.
Vedere anche
Topologie della cache
Cluster di cache
Cache locale
Cache cliente
Bridge per la replica WAN