Conectividad de caché
Después de configurar con éxito NCache, puede comenzar a desarrollar aplicaciones utilizando NCache incrustando NCache Llamadas API. Para hacerlo, debe garantizar la conectividad de la caché. Se pueden conectar cachés únicos o múltiples en una sola aplicación. Además, el caché se puede conectar con credenciales de seguridad.
Note
Esta característica también está disponible en NCache Professional.
Requisitos previos para la conectividad de caché
- Para obtener información sobre los requisitos previos estándar necesarios para trabajar con todos NCache características del lado del cliente, incluida la conectividad de caché, consulte la página proporcionada en Requisitos previos de la API del lado del cliente.
- Para obtener detalles de la API, consulte: Dolor, Administrador de caché, Obtener Caché, Opciones de conexión de caché.
Conectarse a caché único
NCache proporciona un ICache
interfaz para obtener una instancia de NCachecaché de . Además, el CacheManager
class le permite conectarse a la instancia de caché a través de la GetCache
método.
El siguiente ejemplo se conecta a una caché denominada demoCache que se encuentra en estado de ejecución.
// Specify the cache name
string cacheName = "demoCache";
// Connect to cache
ICache cache = CacheManager.GetCache(cacheName);
Note
Para garantizar que la operación sea a prueba de fallas, se recomienda manejar cualquier posible excepción dentro de su aplicación, como se explica en Manejo de fallas.
Conectarse a múltiples cachés
Usando el GetCache
método, puede conectarse a múltiples cachés dentro de una sola aplicación. Esto lo ayudará a administrar los datos de múltiples cachés usando una aplicación.
El siguiente ejemplo se conecta a dos cachés, demoCache y demoClusteredCache desde el mismo cliente.
// Specify cache names
string cacheName1 = "demoCache";
string cacheName2 = "demoClusteredCache";
// Connect to the caches
ICache cache1 = CacheManager.GetCache(cacheName1);
ICache cache2 = CacheManager.GetCache(cacheName2);
Conectarse a la memoria caché mediante CacheConnectionOptions
CacheConnectionOptions
permite especificar valores de las propiedades de la memoria caché al establecer una conexión con la memoria caché. Estos valores son los mismos que se pueden configurar a través de cliente.ncconf archivo.
Note
Cualquier configuración especificada a través de CacheConnectionOptions
anulará el valor en cliente.ncconf para ese cliente en particular.
En este ejemplo, los valores de RetryInterval
, ConnectionRetries
, EnableKeepAlive
y KeepAliveInterval
Las propiedades se pueden cambiar. Para esta aplicación, se utilizarán estos valores en lugar de los especificados en el archivo de configuración del cliente.
// 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);
Conéctese a la caché usando CacheConnectionOptions para Load Balancer
A menudo, las implementaciones de aplicaciones emplean balanceadores de carga para evitar que las solicitudes abrumen a los servidores, es decir, evitar que los clientes accedan a los servidores directamente. En tales circunstancias, para garantizar que su clúster se conecte a todos los servidores, NCache ofrece el IsLoadBalancer
API, como se demuestra a continuación:
CacheConnectionOptions cacheConnectionOptions = new CacheConnectionOptions();
cacheConnectionOptions.ServerList = new List<ServerInfo>()
{
new ServerInfo("20.200.20.40", 9800, true)
};
ICache cache = CacheManager.GetCache("demoCache", cacheConnectionOptions);
Note
Más información sobre cómo NCache se ocupa de estos balanceadores de carga esta página.
Conéctese a la caché agrupada y del cliente
Note
Usando el GetCache
El método para conectarse a la caché de cliente y en clúster en una sola llamada no es un enfoque recomendado.
Uno puede conectarse a la caché de cliente y en clúster en una sola llamada utilizando el GetCache
método. Esto inicializará ambos cachés dentro de una sola aplicación, lo que le ayudará a administrar los datos de múltiples cachés a través de una sola aplicación.
Note
Si la caché local está conectada a la caché del cliente, la serialización debe ser la misma que la de la caché agrupada. Ambas cachés deben configurarse previamente y deben estar en estado de ejecución.
El siguiente ejemplo se conecta a dos cachés usando el GetCache
método.
// 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);
Conéctese a la caché con credenciales de seguridad
Si se ha habilitado la seguridad, debe proporcionar las credenciales de seguridad mientras se conecta a los cachés para que el usuario autorizado pueda realizar la operación. Para obtener más detalles sobre el uso de la seguridad en NCache, consulte nuestra página, NCache Seguridad.
// 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);
Solucionando Problemas
El puerto no es accesible
A veces, es posible que los clientes no puedan conectarse a un caché debido a la configuración de su firewall.
Solución
Utilice los detalles en nuestro consulte la guía de inicio para cambiar la configuración de su firewall.
No se puede encontrar client.ncconf
A veces un cliente puede no ser capaz de encontrar el cliente.ncconf archivo mientras se conecta al caché. Esto sucede cuando NCache directorio%NCHOME%
) no está configurado.
Solución
If %NCHOME%
no está configurado, siga los pasos a continuación para configurar la variable de entorno:
- Haga clic derecho sobre Inicio botón y seleccione System.
- En el panel derecho, haga clic en Configuración avanzada del sistema.
- En Propiedades del sistema ventana, ve a la Avanzado pestaña y haga clic en el Variables de entorno del botón.
- En Variables de entorno ventana, debajo Variables del sistema, haga clic en Nuevo.
- Nombre de la variable entrar
%NCHOME%
. - Valor variable entrar
C:\Program Files\NCache
. - Haga Clic en OK.
- Ahora para actualizar la ruta del sistema de la misma manera. Variables de entorno ventana, encuentra el Path variable y haga clic en Editar.
- En Editar variable de entorno ventana, haga clic Nuevo y añade
%NCHOME%\bin
a la lista. Esto garantiza que las herramientas estén disponibles a nivel mundial. - Haga Clic en OK para cerrar cada una de las ventanas.
No hay servidor disponible para procesar la solicitud
A veces, es posible que un cliente no pueda conectarse al caché porque el puerto Cliente/Servidor está bloqueado por un firewall.
Solución
Asegúrese de que el puerto Cliente/Servidor (en el que NCache El servicio se inicia y acepta diferentes conexiones de clientes) no está bloqueado por un firewall. El valor predeterminado de este puerto es '9800'. Puede cambiar el valor predeterminado de Alachisoft.NCache.Servicio.exe.config or Alachisoft.NCache.Servicio.dll.config archivo.
No se puede comunicar con el nodo del servidor
Los nodos del clúster también pueden no poder comunicarse entre sí debido a que un firewall bloquea los puertos del clúster.
Error: "Unable to communicate with server node"
Solución
Vea si su firewall permite el puerto Cliente/Servidor y Clúster. Un puerto de clúster es un puerto en el que se comunican los nodos de un clúster. Puede cambiar el valor predeterminado de estos puertos desde NCache Centro de gestion. Si ha especificado un rango de puertos en el NCache Centro de gestión, desbloquea todos los puertos del rango.
Interbloqueo del socket del cliente
Puede experimentar una situación de interbloqueo en el socket de su cliente debido a una larga espera de una respuesta del servidor de caché. Esto también puede resultar en muchos subprocesos en espera que pueden causar problemas de rendimiento.
Solución
Paso 1: cambios en el lado del servidor
Vaya al archivo de configuración del servicio:
- Windows .NET 4.8: Alachisoft.NCache.Servicio.exe.config localizado en %NCHOME%\bin\servicio
- Windows .NET: Alachisoft.NCache.Servicio.dll.config localizado en %NCHOME%\bin\servicio
- Linux.NET: Alachisoft.NCache.Daemon.dll.config localizado en / Opt /ncache/bin/servicio
- ventanas-java: Alachisoft.NCache.Servicio.dll.config localizado en %NCHOME%\bin\servicio
- LinuxJava: Alachisoft.NCache.Daemon.dll.config localizado en / Opt /ncache/bin/servicio
Agregue las siguientes líneas en el archivo de configuración:
<add key ="NCacheServer.EnableBadClientDetection" value = "true" />
El valor "verdadero" indica que BadClientDetection está habilitado en su socket de cliente. Esto significa que ahora, si surge una situación de interbloqueo en el socket de su cliente, el socket se restablecerá. El valor por defecto de esta propiedad es "falso".
<add key ="NCacheServer.ClientSocketSendTimeout" value = "10" />
Cuando haya habilitado BadClientDetection
, puede especificar el intervalo de tiempo después del cual se restablece el socket en caso de interbloqueo. El valor predeterminado de esta propiedad es "10" y este valor no puede ser inferior a 1.
Algunas otras propiedades también se han introducido en Alachisoft.NCache.Servicio.exe.config para ayudar con este problema. Configure estas propiedades de la siguiente manera:
<add key ="NCacheServer.EventPriorityRatio" value="30"/>
En el lado del servidor, se utiliza una cola de prioridad para eventos y operaciones de caché. Puede configurar una proporción de eventos y operaciones de caché para esta cola a través de la propiedad llamada EventPriorityRatio
. El valor predeterminado de esta propiedad es 30, lo que indica una proporción de 30:70 para eventos y operaciones de caché. El valor de esta propiedad no puede ser inferior a 1.
<add key ="NCacheServer.EventBulkCount" value="50"/>
El servidor de caché ahora envía eventos a los clientes de forma masiva. A través de esta propiedad, puede establecer la cantidad de artículos que se enviarán de forma masiva. De forma predeterminada, este valor es 50 y el valor no puede ser inferior a 1. Está disponible en la versión de cliente 4124 y superior.
<add key ="NCacheServer.EventBulkCollectionInterval" value="2"/>
Esta propiedad se utiliza para establecer el intervalo de tiempo, en segundos, después del cual se activa la mayor parte de los eventos, incluso en caso de que el recuento masivo no alcance el EventBulkCount
que el usuario haya especificado. El valor predeterminado para esta propiedad es 2 segundos y el valor no puede ser inferior a 1.
Reinicia el NCache servicio para que estos cambios surtan efecto.
Paso 2: cambios en el lado del cliente
Realice los siguientes cambios en su Aplicación.config/web.config archivo:
<configuration>
<appSettings>
<add key ="NCacheClient.AsynchronousEventNotification" value="true"/>
<add key ="NCacheClient.NumberofEventProccesingThreads" value="2"/>
</appSettings>
</configuration>
AsynchronousEventNotification
: Especifica si los eventos se activarán de forma asincrónica o sincrónica en el lado del cliente. El valor predeterminado es "verdadero", lo que indica que los eventos se activarán de forma asincrónica. El valor "falso" significa que los eventos se activarán sincrónicamente en el lado del cliente.
NumberofEventProcessingThreads
: cuando el usuario ha configurado eventos para que se activen sincrónicamente, este indicador se usa para especificar la cantidad de subprocesos que procesarán estos eventos en el lado del cliente. Un valor muy grande puede causar problemas de rendimiento.
Vea también
.NETO: Alachisoft.NCache.Cliente espacio de nombres
Java: com.alachisoft.ncache.cliente espacio de nombres
Nodo.js: cache clase.
Pitón: ncache.cliente clase.