Connectivité du cache
Après avoir configuré avec succès NCache, vous pouvez commencer à développer des applications en utilisant NCache en incorporant NCache Appels API. Pour ce faire, vous devez garantir la connectivité du cache. Des caches simples ou multiples peuvent être connectés dans une seule application. De plus, le cache peut être connecté avec des informations d'identification de sécurité.
Notes
Cette fonctionnalité est également disponible dans NCache Professional.
Conditions préalables à la connectivité du cache
- Pour en savoir plus sur les prérequis standard requis pour travailler avec tous NCache fonctionnalités côté client, y compris la connectivité du cache, veuillez vous référer à la page donnée sur Prérequis de l'API côté client.
- Pour plus de détails sur l'API, reportez-vous à : ICache, Gestionnaire de cache, ObtenirCache, CacheConnectionOptionsCacheConnectionOptions.
Se connecter au cache unique
NCache fournit ICache
interface pour obtenir une instance de NCachecache. De plus, le CacheManager
class vous permet de vous connecter à l'instance de cache via la GetCache
méthode.
L'exemple suivant se connecte à un cache nommé demoCache qui est en cours d'exécution.
// Specify the cache name
string cacheName = "demoCache";
// Connect to cache
ICache cache = CacheManager.GetCache(cacheName);
Notes
Pour garantir la sécurité de l'opération, il est recommandé de gérer toutes les exceptions potentielles au sein de votre application, comme expliqué dans Gestion des échecs.
Connectez-vous à plusieurs caches
Le GetCache
méthode, vous pouvez vous connecter à plusieurs caches dans une seule application. Cela vous aidera à gérer les données de plusieurs caches à l'aide d'une seule application.
L'exemple suivant se connecte à deux caches, demoCache et demoClusteredCache du même client.
// Specify cache names
string cacheName1 = "demoCache";
string cacheName2 = "demoClusteredCache";
// Connect to the caches
ICache cache1 = CacheManager.GetCache(cacheName1);
ICache cache2 = CacheManager.GetCache(cacheName2);
Se connecter au cache à l'aide de CacheConnectionOptions
CacheConnectionOptions
permet de spécifier les valeurs des propriétés du cache lors de l'établissement d'une connexion au cache. Ces valeurs sont les mêmes qui peuvent être configurées via client.ncconf fichier.
Notes
Toute configuration spécifiée via CacheConnectionOptions
remplacera la valeur dans client.ncconf pour ce client particulier.
Dans cet exemple, les valeurs de RetryInterval
, ConnectionRetries
, EnableKeepAlive
et la
KeepAliveInterval
les propriétés peuvent être modifiées. Pour cette application, ces valeurs seront utilisées à la place de celles spécifiées dans le fichier de configuration client.
// Create new CacheConnectionOptions instance
var options = new CacheConnectionOptions();
// Specify the cache connection options to be set
options.RetryInterval = TimeSpan.FromSeconds(5);
options.ConnectionRetries = 2;
options.EnableKeepAlive = true;
options.KeepAliveInterval = TimeSpan.FromSeconds(30);
// Specify the cache name
string cacheName = "demoCache";
// Connect to cache with CacheConnectionOptions
ICache cache = CacheManager.GetCache(cacheName, options);
Se connecter au cache à l'aide de CacheConnectionOptions pour Load Balancer
Souvent, les déploiements d'applications utilisent des équilibreurs de charge pour empêcher les requêtes émanant de serveurs surchargés, c'est-à-dire empêcher les clients d'accéder directement aux serveurs. Dans de telles circonstances, pour garantir que votre cluster se connecte à tous les serveurs, NCache offre le IsLoadBalancer
API, comme démontré ci-dessous :
CacheConnectionOptions cacheConnectionOptions = new CacheConnectionOptions();
cacheConnectionOptions.ServerList = new List<ServerInfo>()
{
new ServerInfo("20.200.20.40", 9800, true)
};
ICache cache = CacheManager.GetCache("demoCache", cacheConnectionOptions);
Notes
En savoir plus sur la façon dont NCache s'occupe de ces équilibreurs de charge ici.
Se connecter au cluster et au cache client
Notes
Le GetCache
La méthode pour se connecter au cluster et au cache client en un seul appel n'est pas une approche recommandée.
On peut se connecter au cluster et au cache client en un seul appel en utilisant le GetCache
méthode. Cela initialisera les deux caches au sein d'une seule application, vous aidant ainsi à gérer les données de plusieurs caches via une seule application.
Notes
Si le cache local est connecté au Cache Client, la sérialisation doit être la même que celle du cache clusterisé. Les deux caches doivent être configurés au préalable et doivent être en cours d’exécution.
L'exemple suivant se connecte à deux caches à l'aide du GetCache
méthode.
// Specify the cache names
string clusteredCache = "demoCache";
string clientCache = "myClientCache";
CacheConnectionOptions cacheConnectionOptions = new CacheConnectionOptions();
cacheConnectionOptions.LoadBalance = true;
cacheConnectionOptions.ConnectionRetries = 5;
CacheConnectionOptions clientCacheConnectionOptions = new CacheConnectionOptions();
clientCacheConnectionOptions.LoadBalance = true;
clientCacheConnectionOptions.ConnectionRetries = 5;
clientCacheConnectionOptions.Mode = IsolationLevel.OutProc;
// Connect to the caches in a single call
// CacheConnectionOptions which can be null if not required
ICache cache = CacheManager.GetCache(clusteredCache, cacheConnectionOptions, clientCache, clientCacheConnectionOptions);
Se connecter au cache avec des informations d'identification de sécurité
Si la sécurité a été activée, vous devez fournir les informations d'identification de sécurité lors de la connexion aux caches afin que l'utilisateur autorisé puisse effectuer l'opération. Pour plus de détails sur l'utilisation de la sécurité dans NCache, Voir NCache Sécurité.
// Specify cache name and user credentials
string cacheName = "demoCache";
string userId = "userid";
string password = "mypassword";
// Initialize the CacheConnectionOptions
var options = new CacheConnectionOptions();
// Enter the credentials
options.UserCredentials = new Credentials(userId, password);
// Connect to the cache using the security credentials
ICache cache = CacheManager.GetCache(cacheName, options);
Dépannage
Le port n'est pas accessible
Parfois, les clients peuvent ne pas pouvoir se connecter à un cache en raison de la configuration de votre pare-feu.
Solution
Utilisez les détails dans notre Guide de Démarrage pour modifier les paramètres de votre pare-feu.
Impossible de trouver client.ncconf
Parfois, un client peut être incapable de trouver le client.ncconf fichier lors de la connexion au cache. Cela arrive quand NCache répertoire (%NCHOME%
) n'est pas défini.
Solution
If %NCHOME%
n'est pas défini, suivez les étapes ci-dessous pour définir la variable d'environnement correspondante :
- Faites un clic droit sur le Accueil bouton et sélectionnez Système.
- Dans le volet de droite, cliquez sur Paramètres système avancés.
- Dans le Propriétés système aller à la fenêtre Avancé onglet et cliquez sur le Variables d'environnement .
- Dans le Variables d'environnement fenêtre, sous Variables système, cliquer sur Nouveauté.
- Pour Nom de variable entrer
%NCHOME%
. - Pour Valeur variable entrer
C:\Program Files\NCache
. - Cliquez OK.
- Maintenant, mettez à jour le chemin du système de la même manière Variables d'environnement fenêtre, trouvez la Chemin variable et cliquez Modifier.
- Dans le Modifier la variable d'environnement fenêtre, cliquez sur Nouveauté et ajouter
%NCHOME%\bin
à la liste. Cela garantit que les outils sont disponibles dans le monde entier. - Cliquez OK pour fermer chacune des fenêtres.
Aucun serveur disponible pour traiter la demande
Parfois, un client peut ne pas pouvoir se connecter au cache car le port client/serveur est bloqué par un pare-feu.
Solution
Assurez-vous que le port client/serveur (sur lequel NCache Le service démarre et accepte différentes connexions client) n'est pas bloqué par un pare-feu. La valeur par défaut de ce port est « 9800 ». Vous pouvez modifier la valeur par défaut de Alachisoft.NCache.Service.exe.config or Alachisoft.NCache.Service.dll.config fichier.
Impossible de communiquer avec le nœud du serveur
Les nœuds du cluster peuvent également être incapables de communiquer entre eux en raison du blocage des ports du cluster par un pare-feu.
Error: "Unable to communicate with server node"
Solution
Vérifiez si votre pare-feu autorise le port client/serveur et cluster. Un port de cluster est un port sur lequel les nœuds d'un cluster communiquent. Vous pouvez modifier la valeur par défaut de ces ports à partir de NCache Centre de gestion. Si vous avez spécifié une plage de ports dans le NCache Management Center, débloquez tous les ports de la plage.
Blocage du socket client
Vous pouvez rencontrer une situation de blocage sur votre socket client en raison d'une longue attente d'une réponse du serveur de cache. Cela peut également entraîner de nombreux threads en attente pouvant entraîner des problèmes de performances.
Solution
Étape 1 : Modifications côté serveur
Accédez au fichier de configuration du service :
- Windows.NET 4.8: Alachisoft.NCache.Service.exe.config situé à %NCHOME%\bin\service
- Windows.NET: Alachisoft.NCache.Service.dll.config situé à %NCHOME%\bin\service
- Linux.NET: Alachisoft.NCache.Daemon.dll.config situé à / opt /ncache/bin/service
- WindowsJava: Alachisoft.NCache.Service.dll.config situé à %NCHOME%\bin\service
- Linux-Java: Alachisoft.NCache.Daemon.dll.config situé à / opt /ncache/bin/service
Ajoutez les lignes suivantes dans le fichier de configuration :
<add key ="NCacheServer.EnableBadClientDetection" value = "true" />
La valeur "true" indique que BadClientDetection est activé sur votre socket client. Cela signifie que maintenant, si une situation de blocage survient sur votre socket client, le socket sera réinitialisé. La valeur par défaut de cette propriété est "false".
<add key ="NCacheServer.ClientSocketSendTimeout" value = "10" />
Lorsque vous avez activé BadClientDetection
, vous pouvez spécifier l'intervalle de temps après lequel le socket est réinitialisé en cas de blocage. La valeur par défaut de cette propriété est "10" et cette valeur ne peut pas être inférieure à 1.
Quelques autres propriétés ont également été introduites dans Alachisoft.NCache.Service.exe.config pour aider à résoudre ce problème. Veuillez configurer ces propriétés comme suit :
<add key ="NCacheServer.EventPriorityRatio" value="30"/>
Côté serveur, une file d'attente prioritaire est utilisée pour les événements et les opérations de cache. Vous pouvez configurer un ratio d'événements et d'opérations de cache pour cette file d'attente via la propriété appelée EventPriorityRatio
. La valeur par défaut de cette propriété est 30, ce qui indique un ratio de 30:70 pour les événements et les opérations de cache. La valeur de cette propriété ne peut être inférieure à 1.
<add key ="NCacheServer.EventBulkCount" value="50"/>
Le serveur de cache envoie désormais des événements aux clients en masse. Grâce à cette propriété, vous pouvez définir le nombre d'articles à envoyer en masse. Par défaut, cette valeur est 50 et la valeur ne peut pas être inférieure à 1. Ceci est disponible dans la version client 4124 et supérieure.
<add key ="NCacheServer.EventBulkCollectionInterval" value="2"/>
Cette propriété est utilisée pour définir l'intervalle de temps, en secondes, après lequel la majeure partie des événements est déclenchée même si le nombre de masses n'atteint pas la valeur maximale. EventBulkCount
que l'utilisateur a spécifié. La valeur par défaut de cette propriété est de 2 secondes et la valeur ne peut pas être inférieure à 1.
Redémarrez le NCache service pour que ces modifications prennent effet.
Étape 2 : Modifications côté client
Veuillez apporter les modifications suivantes à votre App.config/Web.config fichier:
<configuration>
<appSettings>
<add key ="NCacheClient.AsynchronousEventNotification" value="true"/>
<add key ="NCacheClient.NumberofEventProccesingThreads" value="2"/>
</appSettings>
</configuration>
AsynchronousEventNotification
: Spécifie si les événements seront déclenchés de manière asynchrone ou synchrone côté client. La valeur par défaut est « true », ce qui indique que les événements seront déclenchés de manière asynchrone. La valeur « false » signifie que les événements seront déclenchés de manière synchrone côté client.
NumberofEventProcessingThreads
: Lorsque l'utilisateur a configuré les événements pour qu'ils soient déclenchés de manière synchrone, cet indicateur est utilisé pour spécifier le nombre de threads qui traiteront ces événements côté client. Une valeur très élevée peut entraîner des problèmes de performances.
Voir aussi
.RAPPORTER: Alachisoft.NCache.Client espace de noms.
Java: com.alachisoft.ncache.client espace de noms.
Node.js : Cache classe.
python: ncache.client classe.