Cliente de caché distribuida
El uso de NCache abarca una variedad de casos de uso, desde un simple almacén de clave-valor hasta avanzado búsqueda SQL y Pub / Sub. Las aplicaciones cliente incluyen, entre otras, aplicaciones de consola, servicios de Windows, aplicaciones web y servicios web. Las bibliotecas cliente (SDK) incluyen .NET, Java y NodeJS. Además, también se proporciona soporte para Python y Scala. Utilizando el SDK correspondiente, las aplicaciones cliente pueden conectarse con una o más cachés.
Note
Esta característica también está disponible en NCache Professional.
Métodos de comunicación para el cliente de caché distribuida
Google Protobuf como formato de intercambio de datos: El cliente se comunica con la caché distribuida a través de un socket TCP persistente. NCache usos del cliente Búfer de protocolo de Google (Protobuf) como protocolo para comunicarse con el servidor de caché. El uso de Protobuf proporciona flexibilidad a las versiones de cliente más antiguas de NCache, para comunicarse con nuevas versiones del servidor de caché.
Ejecución de solicitud paralela basada en solicitud-respuesta: NCache El cliente admite subprocesos múltiples. Esas aplicaciones pueden realizar solicitudes paralelas al caché. NCache sigue el protocolo de solicitud-respuesta basado en RequestId en las comunicaciones cliente-servidor, donde a cada solicitud se le asigna un RequestId único. A pesar de tener una única conexión TCP entre el cliente de caché y un servidor de caché, el cliente puede enviar múltiples solicitudes con sus RequestIds únicos al servidor de caché sin esperar la respuesta de las solicitudes ya enviadas. Entonces, cada solicitud es verdaderamente independiente. NCache El servidor también admite la ejecución de solicitudes paralelas. Esta arquitectura permite que las aplicaciones ejecuten múltiples operaciones paralelas desde el cliente a los servidores de caché sin que las operaciones se esperen entre sí, proporcionando así el máximo rendimiento y escalabilidad.
Canalización de solicitudes: Tubería se refiere a combinar y enviar múltiples solicitudes en una sola operación de socket (E/S). Siempre que las aplicaciones realizan operaciones de E/S, se produce un cambio de modo de usuario a kernel, lo cual es una operación costosa. Tubería evita este costo al realizar la misma tarea en un número reducido de operaciones de E/S. Tubería aumenta muchas veces el rendimiento de la aplicación. NCache admite canalización tanto en el extremo del cliente como en el del servidor.
Conciencia de topología de caché: NCache El cliente tiene en cuenta la topología de la caché. Cuando un cliente de caché se conecta al primer servidor de caché, recupera los metadatos de la caché, incluida su topología. La forma en que un cliente debe establecer conectividad con los servidores de caché y cómo deben ejecutarse las operaciones del cliente depende de la topología subyacente de la caché. Por ejemplo, los datos se distribuyen entre diferentes servidores de caché en Particionado y Réplica de partición topologías. Por lo tanto, el cliente establece una conexión TCP con cada servidor en el clúster de caché y recupera los mapas de distribución de datos más recientes. El cliente realiza directamente operaciones de lectura y escritura en la partición que contiene los datos en cuestión. De manera similar, cada servidor en el Replicado La topología contiene el mismo conjunto de datos. Por tanto, el cliente sólo se conecta con un único servidor de caché.
Manejo de fallas de conexión de manera transparente: El NCache el cliente mantiene una conexión persistente con los servidores de caché. Si esta conexión se interrumpe debido a fallas en la red, el NCache El cliente está equipado con un mecanismo de restablecimiento de conexión en segundo plano. Este mecanismo establece automáticamente la conectividad con el servidor fallido tan pronto como se reanuda la conectividad de red entre el cliente y el servidor. Y todo esto sucede sin problemas, sin intervención de la aplicación del cliente.
Serialización de datos: Los datos de la aplicación pasan por el proceso de serialización antes de ir al servidor de caché. NCache apoya a ambos Serialización binaria y JSON. Puede elegir cualquiera de los formatos de serialización al momento de configurar el caché. El cliente de caché recupera el formato de serialización del servidor de caché al conectarse al caché. Luego serializa los datos de la aplicación según el formato de serialización.
Cifrado de datos: El cifrado de los datos de la aplicación es una característica opcional que puede habilitar. Si cifrado está configurado, el cliente cifra los datos de la aplicación después de serializarlos. El cliente obtiene la configuración relacionada con el cifrado del servidor de caché al conectarse al caché.
Compresión de datos: Compresión de los datos de la aplicación puede ayudar a reducir el tamaño de la memoria caché si los datos son realmente grandes. Los datos primero se serializan, luego se cifran (si el cifrado está habilitado) y, finalmente, el cliente de caché los comprime antes de enviarlos a la memoria caché. El cliente de caché obtiene la configuración relacionada con la compresión del servidor de caché al conectarse a la caché.
Conexión con el caché
El cliente de caché necesita la información del servidor para conectarse con el caché. La información del servidor se puede proporcionar a través del archivo de configuración del cliente (cliente.ncconf ) o a través de Opciones de conexión de caché. El cliente itera a través de la lista de servidores de caché proporcionada e intenta conectarse con el caché que se ejecuta en el servidor. Si la instancia de caché no se está ejecutando en un servidor determinado, se mueve al siguiente servidor proporcionado en la lista. La conexión del cliente generalmente pasa por los siguientes pasos:
El cliente primero establece una conexión TCP con NCache servicio terminado Puerto 9800.
Luego, el cliente solicita la lista completa de servidores de caché configurados. De esta forma, tiene una lista actualizada de los servidores de caché.
Luego, el cliente envía al caché una solicitud de inicialización al servidor, que incluye el nombre del caché y las credenciales de seguridad en caso de que la seguridad de caché está habilitada. Cada caché se ejecuta en un proceso separado. Si usted tiene .NET Framework instalación basada en NCache en el extremo del servidor, luego el servicio transfiere sin problemas la conexión del cliente al proceso de caché, y el cliente se conecta con éxito con el caché. En .NET Core o .NET 6 y versiones posteriores, el servicio comparte la información del puerto con el cliente en el que la memoria caché escucha las conexiones. Luego, el cliente establece una conexión directa con el proceso de caché y envía una solicitud de inicialización.
Note
NCache configura automáticamente el Firewall para abrir todos los puertos requeridos en Windows. Sin embargo, debe abrir NCache puertos en Linux por Configurar el cortafuegos.
Si el cliente se está conectando con un Caché replicado y el equilibrio de carga del cliente está habilitado, entonces el cliente solicita un servidor que tenga la menor cantidad de clientes conectados. Luego se conecta con el servidor menos cargado.
Si el cliente se está conectando con un Particionado o un Réplica de partición caché, luego solicita los mapas de distribución para los servidores. Al recibir los mapas, establece conexiones con los servidores de caché presentes en el mapa de distribución.
El cliente también solicita diferentes configuraciones de caché como
- Umbral de compresión y formato de serialización de caché
- Claves de cifrado se comparten entre el cliente y el servidor de caché
- Índices de consulta configurados y tipos compactos registrados, etc.
Vea también
Topologías de caché
Clúster de caché
Caché local
Caché de cliente
Puente para replicación WAN