Client de cache distribué
L'utilisation de NCache couvre une variété de cas d'utilisation, à partir d'un simple magasin clé-valeur à avancé Recherche SQL et les Pub / Sous-marin. Les applications client incluent, sans s'y limiter, les applications console, les services Windows, les applications Web et les services Web. Les bibliothèques clientes (SDK) incluent .NET, Java et NodeJS. De plus, la prise en charge de Python et Scala est également fournie. À l'aide du SDK approprié, les applications clientes peuvent se connecter à un ou plusieurs caches.
Notes
Cette fonctionnalité est également disponible dans NCache Professional.
Méthodes de communication pour le client de cache distribué
Google Protobuf comme format d'échange de données : Le client communique avec le cache distribué via un socket TCP persistant. NCache le client utilise Tampon de protocole Google (Protobuf) comme protocole pour communiquer avec le serveur de cache. L'utilisation de Protobuf offre une flexibilité aux anciennes versions client de NCache, pour communiquer avec les nouvelles versions du serveur de cache.
Exécution de requête parallèle basée sur la requête-réponse : NCache le client prend en charge le multithread. Ces applications peuvent effectuer des requêtes parallèles au cache. NCache suit le protocole de demande-réponse basé sur RequestId dans les communications client-serveur, où chaque demande se voit attribuer un RequestId unique. Malgré une seule connexion TCP entre le client de cache et un serveur de cache, le client peut envoyer plusieurs requêtes avec leurs RequestIds uniques au serveur de cache sans attendre la réponse des requêtes déjà envoyées. Ainsi, chaque demande est véritablement indépendante. NCache Le serveur prend également en charge l'exécution de requêtes parallèles. Cette architecture permet aux applications d'exécuter plusieurs opérations parallèles du client vers les serveurs de cache sans que les opérations ne s'attendent les unes les autres, offrant ainsi des performances et une évolutivité maximales.
Traitement en pipeline des demandes : Pipelining fait référence à la combinaison et à l'envoi de plusieurs requêtes en une seule opération de socket (E/S). Chaque fois que des applications effectuent des opérations d'E/S, une commutation de mode utilisateur vers noyau se produit, ce qui est une opération coûteuse. Pipelining évite ce coût en effectuant la même tâche avec un nombre réduit d'opérations d'E/S. Pipelining augmente considérablement les performances des applications. NCache prend en charge le pipeline côté client et côté serveur.
Prise en compte de la topologie du cache : NCache le client prend en compte la topologie du cache. Lorsqu'un client de cache se connecte au premier serveur de cache, il récupère les métadonnées du cache, y compris sa topologie. La manière dont un client doit établir la connectivité avec les serveurs de cache et la manière dont les opérations client doivent être exécutées dépendent de la topologie sous-jacente du cache. Par exemple, les données sont réparties entre différents serveurs de cache dans Partitionné et les Réplique de partition topologies. Par conséquent, le client établit une connexion TCP avec chaque serveur du cluster de cache et récupère les dernières cartes de distribution de données. Le client effectue directement des opérations de lecture et d'écriture sur la partition contenant les données concernées. De même, chaque serveur du Répliqué la topologie contient le même ensemble de données. Ainsi, le client ne se connecte qu'à un seul serveur de cache.
Gérer les échecs de connexion de manière transparente : Le NCache le client maintient une connexion permanente avec le(s) serveur(s) de cache. Si cette connexion s'interrompt en raison de problèmes de réseau, le NCache le client est équipé d'un mécanisme de rétablissement de connexion en arrière-plan. Ce mécanisme établit automatiquement la connectivité avec le serveur défaillant, dès que la connectivité réseau est rétablie entre le client et le serveur. Et tout cela se déroule de manière transparente, sans intervention de l’application cliente.
Sérialisation des données : Les données d'application passent par le processus de sérialisation avant d'aller au serveur de cache. NCache prend en charge les deux Sérialisation binaire et JSON. Vous pouvez choisir l'un ou l'autre des formats de sérialisation au moment de la configuration du cache. Le client de cache récupère le format de sérialisation du serveur de cache lors de la connexion au cache. Ensuite, il sérialise les données de l'application selon le format de sérialisation.
Cryptage des données: Le chiffrement des données d'application est une fonctionnalité facultative que vous pouvez activer. Si chiffrement est configuré, le client crypte les données d'application après leur sérialisation. Le client récupère la configuration liée au chiffrement à partir du serveur de cache lors de la connexion au cache.
Compression des données : Compression des données d'application peut aider à réduire la taille du cache si les données sont très volumineuses. Les données sont d'abord sérialisées, puis chiffrées (si le chiffrement est activé) et enfin compressées par le client de cache avant d'être envoyées au cache. Le client de cache récupère la configuration liée à la compression à partir du serveur de cache lors de la connexion au cache.
Connexion avec le cache
Le client de cache a besoin des informations du serveur pour se connecter au cache. Les informations sur le serveur peuvent être fournies via le fichier de configuration client (client.ncconf ) ou par CacheConnectionOptionsCacheConnectionOptions. Le client parcourt la liste de serveurs de cache fournie et tente de se connecter au cache en cours d'exécution sur le serveur. Si l'instance de cache ne s'exécute pas sur un serveur donné, elle passe au serveur suivant fourni dans la liste. La connexion client passe généralement par les étapes suivantes :
Le client établit d'abord une connexion TCP avec NCache service sur port 9800.
Le client demande alors la liste complète des serveurs de cache configurés. De cette façon, il dispose d'une liste mise à jour des serveurs de cache.
Le client envoie ensuite au cache une demande d'initialisation au serveur, qui inclut le nom du cache et les informations d'identification de sécurité au cas où la sécurité du cache est activée. Chaque cache s'exécute dans un processus séparé. Si tu as .NET Framework installation basée sur NCache côté serveur, le service transmet de manière transparente la connexion client au processus de cache et le client se connecte avec succès au cache. Dans .NET Core ou .NET 6 et les installations supérieures, le service partage les informations de port avec le client sur lequel le cache écoute les connexions. Le client établit alors une connexion directe avec le processus de cache et envoie une requête d'initialisation.
Notes
NCache configure automatiquement le pare-feu pour ouvrir tous les ports requis sous Windows. Cependant, vous devez ouvrir NCache ports sous Linux par Configuration du pare-feu.
Si le client se connecte avec un Cache répliqué et que l'équilibrage de charge client est activé, le client demande alors un serveur auquel sont connectés le moins de clients. Il se connecte ensuite au serveur le moins chargé.
Si le client se connecte avec un Partitionné ou Réplique de partition cache, puis il demande les cartes de distribution pour les serveurs. A réception de la ou des cartes, il établit des connexions avec les serveurs de cache présents dans la carte de distribution.
Le client demande également différentes configurations de cache comme
- Seuil de compression et les format de sérialisation du cache
- Clés de chiffrement sont partagés entre le client et le serveur de cache
- Index de requête configurés et types compacts enregistrés, etc.
Voir aussi
Topologies de cache
Cluster de cache
Cache local
Cache Client
Pont pour la réplication WAN