NCache Es una caché distribuida en memoria de código abierto para .NET, Java, Python y Node.js. Diseñada para cargas de trabajo con un alto volumen de transacciones, ofrece velocidad extrema y escalabilidad lineal para eliminar cuellos de botella de rendimiento y soportar el procesamiento de transacciones extremas (XTP). NCache También proporciona replicación de datos inteligente y autorreparación, agrupamiento dinámico para alta disponibilidad.
NCache Cuenta con una agrupación de caché dinámica con autorreparación basada en una arquitectura punto a punto para ofrecer un tiempo de actividad del 100 %. Estos clústeres se basan en TCP; cada servidor del clúster es un punto. Esto permite la expansión o eliminación de la membresía del servidor en tiempo de ejecución sin tiempo de inactividad, sin detener la caché ni la aplicación.
NCache El clúster tiene una arquitectura de clúster punto a punto. Esto significa que no hay nodos maestro/esclavo, y cada servidor es un par. Sin embargo, el Coordinador de Custer es el nodo más antiguo del clúster. Si falla, el siguiente nodo más antiguo se convierte automáticamente en el coordinador.
Perspectiva del arquitecto
A diferencia de las arquitecturas maestro-esclavo que crean un único punto de falla, NCache Utiliza un modelo peer-to-peer 100 % descentralizado. Esto garantiza que, incluso si el Coordinador del Clúster falla, el siguiente nodo más antiguo asume inmediatamente la gestión, manteniendo las operaciones del clúster sin interrupciones.
Este Coordinador de Clúster gestiona todas las operaciones del clúster y demás información de configuración de la caché. También gestiona el estado del clúster y elimina forzosamente cualquier servidor de caché que solo esté parcialmente conectado a los demás servidores del clúster.
NCache Agrupamiento dinámico y propagación de mapas de distribución en tiempo real.
Agrupación dinámica
El núcleo de NCache La alta disponibilidad se basa en la agrupación dinámica en clústeres, lo que permite añadir o eliminar servidores sin tiempo de inactividad mediante la propagación de cambios de membresía a través de TCP en tiempo real. Como se mencionó, NCache tiene un arquitectura de agrupamiento dinámico. Esto permite NCache para estar siempre en funcionamiento, incluso cuando se realizan dichos cambios.
El agrupamiento dinámico le permite hacer lo siguiente:
-Agregar o quitar servidores de caché en tiempo de ejecución sin detener el caché o su aplicación.
-Membresía del grupo se actualiza en tiempo de ejecución y se propaga a todos los servidores del clúster y a todos los clientes conectados al clúster.
NCache Resuelve escenarios de cerebro dividido mediante un algoritmo de detección inteligente que reconcilia automáticamente subgrupos divergentes para restaurar la integridad de los datos sin intervención manual. Otra parte de NCache La agrupación dinámica es su Detección y recuperación inteligente del cerebro dividido Capacidad. El cerebro dividido ocurre cuando, debido a problemas de red, se interrumpe la conexión entre los servidores de caché. Esto provoca la formación de múltiples subclústeres independientes, cada uno de los cuales asume que los demás han dejado de funcionar y que es el único clúster restante.
En tales casos, cuando los servidores de caché abandonan el clúster abruptamente, los servidores restantes... NCache Los servidores siguen intentando reconectarse. Pero mientras esto sucede, cada subclúster actualiza los datos de forma independiente, creando múltiples versiones no sincronizadas.
Una vez resuelto el problema de la red, NCache Activa automáticamente Split Brain. Esto se realiza automáticamente al decidir qué servidores de caché conservan sus datos (ganadores) y cuáles deben cederlos (perdedores). Esto es necesario, ya que los servidores del clúster perdedor deben reincorporarse al clúster ganador como nuevos nodos. Si bien se produce cierta pérdida de datos, el resultado final es una restauración rápida del clúster de caché sin intervención humana.
NCache también te deja añadir o quitar Clientes en tiempo de ejecución sin detener la caché ni a ninguno de sus otros clientes. Al agregar un cliente, solo se requiere un servidor de caché en el clúster para establecer una conexión. Una vez conectado a ese servidor, recibe la información necesaria sobre la pertenencia al clúster y la topología de caché. Después, decide a qué otros servidores conectarse.
-Caché particionada/réplica de particiónEl cliente se conecta a todas las particiones del servidor de caché (pero no a las réplicas, ya que estas solo se comunican con sus particiones). Esto le permite seleccionar la partición adecuada para las operaciones de lectura y escritura. Además, si se agrega un nuevo servidor al clúster, el cliente recibe información actualizada de la membresía del clúster y también se conecta a este nuevo servidor.
-Caché replicado:En caso de Caché replicadoEl cliente se conecta a un solo servidor de caché del clúster, pero con equilibrio de carga para garantizar que todos los servidores tengan el mismo número de clientes. Por lo tanto, todas las lecturas y escrituras son posibles en un solo servidor de caché. Al agregar un nuevo servidor al clúster, el cliente obtiene esta información del servidor de caché y se reconecta a un nuevo servidor si es necesario.
-Caché reflejada:En caso de Caché reflejadaEl cliente se conecta al único nodo activo de este clúster de dos nodos. Si se conecta al nodo pasivo, este le informa sobre el nodo activo y este se reconecta automáticamente. Si el nodo activo deja de funcionar y el nodo pasivo se activa, todos los clientes se conectan automáticamente al nuevo nodo activo.
NCache Escalabilidad en tiempo de ejecución para servidores de caché y clientes.
Configuración dinámica
Como se menciona en las secciones Conexiones de cliente dinámicas y Agrupación en clústeres dinámica, NCache Proporciona una configuración dinámica de la caché y los clientes. Esta sección tiene como objetivo explicarle cómo funciona esta configuración en tiempo de ejecución.
-Configuración de cachéAl crear una caché mediante las herramientas de administración, esta información de configuración se copia a todos los servidores de caché conocidos en ese momento. De igual forma, cualquier servidor nuevo que se añada al clúster durante la ejecución recibe toda la configuración de caché actualizada y la copia a su disco local.
-Aplicar cambios de configuración en calientePuede cambiar algunas configuraciones de caché en tiempo de ejecución mediante "Aplicación en caliente". Por ejemplo, al cambiar... Tamaño del caché o habilitar CompresiónEn este caso, la información de configuración actualizada se propaga a todos los servidores de caché durante la ejecución y se guarda en sus discos. Parte de esta información también se envía a todos los clientes, según sea necesario.
-Mapa de distribución (caché particionada/partición-réplica)Esto se crea al iniciar una caché y se copia a todos los servidores y clientes de caché. Este mapa de distribución contiene información sobre qué depósitos (de un total de 1000 depósitos en la caché agrupada) se encuentran en qué partición.
Conmutación por error de conexión dentro del clúster
Todos los servidores de caché del clúster están conectados mediante TCP. Además, cada servidor de caché está conectado a todos los demás servidores de caché del clúster, incluidos los nuevos servidores añadidos durante la ejecución. NCache Proporciona varias formas de garantizar que todas las conexiones dentro del clúster estén mantenido vivo A pesar de los fallos de conexión. Estos fallos suelen ocurrir debido a un fallo de red causado por enrutadores, firewalls o un problema con la tarjeta o el controlador de red.
-Reintentos de conexión:Si se interrumpe la conexión entre dos servidores de caché, NCache intenta automáticamente varios reintentos para restablecer esta conexión. Estos reintentos ocurrirá mientras dure el período de tiempo de espera especificado por el usuario.
-Latido del corazón que mantiene vivo: NCache También cuenta con una función que permite que cada servidor de caché envíe continuamente pequeños paquetes de datos como un latido a todos los demás servidores. Esto garantiza que, si hay un problema con el socket de red, los servidores de caché lo detecten y lo solucionen mediante reintentos.
-Servidores parcialmente conectados:En algunos casos, los problemas de red pueden dividir el clúster en subclústeres (un "Cerebro dividido"). NCache Detecta y resuelve esto automáticamente una vez que se restaura la red, decidiendo qué clúster conserva sus datos y requiriendo que los demás se vuelvan a unir.
Conmutación por error de conexión con clientes
La conmutación por error de conexión en los clientes es similar a los reintentos de conmutación por error de clúster, los latidos y la reconexión automática a servidores en buen estado.
-Reintentos de conexiónEn cuanto a la conmutación por error, los reintentos de conexión son los mismos a nivel de clúster y de cliente. Sin embargo, si se interrumpe la conexión entre un cliente y los servidores de caché, NCache el cliente lo hace automáticamente múltiples intentos de conexión Para establecer esta conexión. Estos reintentos se realizan durante el tiempo de espera. Si no se puede establecer una conexión, se lanza una excepción a la aplicación cliente para que pueda gestionarla.
-Latido del corazón que mantiene vivo:Lo mismo que en la conmutación por error de conexión dentro del clúster.
-Clientes parcialmente conectados (caché particionado/partición-réplica)A veces, a pesar de los reintentos, la conexión no se restablece a tiempo, por lo que el cliente asume que otros servidores son inaccesibles, incluso si no lo son. Por lo tanto, en el caso de la caché particionada o de réplica de partición, interactúa con otros servidores para leer o escribir todos los datos, aunque su mapa de distribución le indique que el servidor con el que no puede comunicarse tiene los datos. En este caso, el otro servidor de caché actúa como intermediario para el correcto funcionamiento.
Topologías de almacenamiento en caché (escalabilidad lineal)
NCache Proporciona diversas topologías de almacenamiento en caché para permitir una escalabilidad lineal, manteniendo la consistencia y fiabilidad de los datos. El objetivo es dar soporte a aplicaciones desde pequeñas cachés de dos servidores hasta grandes clústeres con cientos de servidores. Una topología de almacenamiento en caché es, en esencia, una estrategia de almacenamiento de datos, replicación de datos y conexiones de clientes en una caché en clúster que abarca varios servidores de caché.
Datos de referencia frente a datos transaccionales
Los datos de referencia no cambian con mucha frecuencia, y se almacenan en caché para atender solicitudes frecuentes y evitar costosas visitas a la base de datos, actualizándolos solo ocasionalmente. Los datos transaccionales, por otro lado, cambian con mucha frecuencia y se pueden actualizar con la misma frecuencia con la que se leen.
En sus inicios, las cachés se utilizaban principalmente para datos de referencia, ya que los datos que cambiaban con frecuencia se volvían obsoletos y desincronizados con los datos más recientes de la base de datos. Sin embargo, NCache ahora proporciona funciones muy potentes que permiten que la memoria caché mantenga los datos almacenados en la memoria caché sincronizados con la base de datos.
Todo NCacheLas topologías de almacenamiento en caché de son adecuadas para datos de referencia, pero algunas son especialmente beneficiosas para datos transaccionales. Por lo tanto, debe determinar cuántas lecturas y escrituras realizará para determinar cuál es la mejor opción. Además, algunas topologías de almacenamiento en caché no escalan tanto, especialmente para actualizaciones, así que tenga esto en cuenta.
A continuación se muestra una lista de topologías de almacenamiento en caché junto con su impacto en las lecturas frente a las escrituras.
-Caché particionada (sin replicación):Esta es la topología más rápida, pero no replica datos, por lo que hay pérdida de datos si un servidor de caché falla.
-Caché de réplica de partición (Más popular)Esta topología es ultrarrápida tanto para lectura como para escritura. Además, replica los datos para garantizar la confiabilidad sin comprometer la seguridad. La mejor combinación de velocidad, escalabilidad y confiabilidad de los datos.
-Caché replicadoMuy bueno para entornos pequeños. Cada servidor mantiene una copia de seguridad completa de la caché, lo que garantiza una alta fiabilidad de los datos y tolerancia a fallos. Superrápido y escalable linealmente para lecturas. Moderadamente rápido para escrituras en un clúster de 2 nodos, pero no escala al añadir más servidores, ya que las escrituras se realizan sincrónicamente en todos los servidores de caché.
-Caché reflejadaEsta topología es ideal para entornos pequeños. Ofrece operaciones de escritura más rápidas que la caché replicada para 2 nodos activos/pasivos. Sin embargo, no escala más allá de esto.
-Caché de clienteIdeal para casos de uso intensivo de lectura con todas las topologías de caché. Permite alcanzar la velocidad InProc con una caché distribuida.
topología
Leer Perf.
Escribe Perf.
Confiabilidad
Mejor caso de uso
Réplica de partición
Extremo
Alto
Alto
Datos transaccionales / Comercio electrónico
Particionado
Extremo
Extremo
Ninguna
Datos transitorios / Máximo rendimiento
Replicado
Extremo
Moderado
Alto
Clústeres pequeños / Lectura intensiva
Espejo
Alto
Alto
Alto
Configuraciones activas/pasivas de 2 nodos
Caché de cliente
Velocidad en proceso
Moderado
Alto (sincronizado)
Almacenamiento en caché L1 local/de lectura intensiva
La caché particionada es la topología de almacenamiento en caché más rápida y escalable, tanto para lectura como para escritura. Está diseñada para clústeres grandes y ofrece lecturas y escrituras rápidas incluso en picos de carga. Sin embargo, no replica los datos. Por lo tanto, no hay respaldo en caso de que un servidor falle.
NCache Caché particionada para escalabilidad y distribución lineal.
Estas son algunas de las características de la memoria caché con particiones.
-Particiones dinámicasLa caché se divide en particiones en tiempo de ejecución, y cada servidor de caché tiene una partición. Hay un total de 1000 depósitos por caché en clúster, distribuidos uniformemente entre todas las particiones. En esencia, añadir o eliminar un servidor de caché implica la creación o eliminación de particiones en tiempo de ejecución. La asignación de depósitos de particiones no cambia al añadir datos a la caché. Solo cambia al añadir o eliminar particiones, o al eliminar datos. carga equilibradaEste reequilibrio se refiere al proceso de transferencia de estado que mueve los depósitos y sus datos a las particiones de destino.
-Mapa de distribuciónEl clúster de caché crea un mapa de distribución que contiene información sobre qué depósitos existen en qué particiones. Este mapa se actualiza cada vez que se produce una transferencia de estado. Se propaga a todos los servidores y clientes. Los clientes lo utilizan para determinar con qué servidor de caché comunicarse en cualquier operación de lectura/escritura.
-Equilibrio de datos dinámicoDado que todos los buckets se basan en HashMap y los datos se almacenan según un algoritmo hash aplicado a las claves, esto puede provocar que algunos buckets contengan más datos que otros, dependiendo de las claves utilizadas. Si este desequilibrio supera un umbral configurable, NCache desplaza automáticamente los contenedores para reequilibrar esta carga.
-Los clientes se conectan a TODAS las particionesLos clientes se conectan a todos los servidores de caché para leer o escribir datos directamente en una sola solicitud. Si la conexión de un cliente con un servidor de caché falla, este solicita a uno de los otros servidores que lea o escriba un elemento almacenado en caché en el servidor al que no puede acceder. Y ese servidor ayuda al cliente a lograrlo.
NOTA: Todo lo mencionado en Caché particionada también se aplica aquí.
Al igual que Caché con particionesLa caché de partición-réplica es una topología de caché extremadamente rápida y escalable linealmente, tanto para lectura como para escritura. Está diseñada para clústeres de caché más grandes, y el rendimiento de lectura y escritura se mantiene muy bien incluso en picos de carga. Además, la caché de partición-réplica también replica datos. Por lo tanto, no hay pérdida de datos incluso si un servidor de caché falla.
La caché de réplica de partición es nuestra topología de almacenamiento en caché más popular porque le ofrece lo mejor de ambos mundos: rendimiento/escalabilidad lineal y confiabilidad de los datos.
NCache Caché de réplica de partición para confiabilidad de datos y escalabilidad lineal.
A continuación se presentan algunas de las características de Partition-Replica Cache.
-Particiones dinámicas:Lo mismo que el caché particionado.
-Réplicas dinámicasCuando se crean o eliminan particiones durante la ejecución, también se crean o eliminan sus réplicas. Las réplicas siempre se encuentran en un servidor de caché diferente y solo hay una réplica por partición.
-Replicación asíncronaDe forma predeterminada, la replicación de una partición a su réplica es asíncrona. Las escrituras del cliente (añadir, actualizar o eliminar) llegan a la partición y se ponen en cola para la replicación masiva asíncrona a la réplica. Esto mejora el rendimiento, pero conlleva un pequeño riesgo de pérdida de datos en caso de que una partición falle y no se hayan replicado todas las actualizaciones a la réplica. Sin embargo, esto es extremadamente raro.
-Replicación sincronizadaSi sus datos son muy sensibles (por ejemplo, datos financieros) y no puede permitirse el lujo de tener datos obsoletos, puede seleccionar la opción "Replicación Sincronizada" en la configuración. Al seleccionarla, todas las operaciones de escritura se realizan sincrónicamente tanto en la Partición como en la Réplica hasta que se consideren completadas. De esta forma, si la operación falla en la Réplica, también falla en la Partición. Por lo tanto, se garantiza que todos los datos en la caché (tanto en la Partición como en la Réplica) sean siempre consistentes. Sin embargo, esto tiene un impacto en el rendimiento, ya que es más lento que la Replicación Asincrónica.
-Mapa de distribución:Lo mismo que el caché particionado.
-Equilibrio dinámico de datos (particiones y réplicas)Igual que la caché particionada. Sin embargo, en la caché de partición-réplica, el balanceo de datos también se produce en las réplicas cuando las particiones están balanceadas.
-Los clientes se conectan a TODAS las particiones: Igual que la caché particionada. Sin embargo, en la caché de partición-réplica, los clientes solo se comunican con las particiones y no con sus réplicas. Esto se debe a que las réplicas son pasivas y las particiones solo se comunican con sus réplicas al replicarles datos.
La caché replicada proporciona fiabilidad de datos mediante la replicación en dos o más servidores de caché. Es muy rápida y escalable para lecturas. Sin embargo, no escala para escrituras, ya que son síncronas con todos los servidores del clúster. En un clúster de dos nodos, las escrituras son más rápidas que las de la base de datos, pero no tan rápidas como en una caché de réplica de partición. En clústeres de tres o más servidores, el rendimiento de escritura se degrada y, con el tiempo, resulta costoso.
NCache Caché replicada para una alta confiabilidad de datos y escalabilidad de lectura.
A continuación se muestran algunas de las características de la caché replicada.
-Nodos replicados dinámicosPuede agregar o eliminar servidores de caché en tiempo de ejecución a una caché existente sin detenerla ni detener la aplicación. El servidor recién agregado crea una réplica de toda la caché. Además, el servidor eliminado actualiza la membresía del clúster y todos sus clientes se trasladan a otros servidores.
-Caché completo en cada nodo:La memoria caché completa se copia en todos los servidores del clúster.
-Las lecturas son escalablesLas lecturas son ultrarrápidas y escalables al agregar más servidores. Sin embargo, agregar más servidores no aumenta el tamaño de la caché, ya que el nuevo servidor es simplemente una copia de toda la caché.
-Las escrituras son sincrónicasLas escrituras son muy rápidas para un clúster de 2 nodos y más rápidas que la base de datos. Sin embargo, son síncronas, lo que significa que cada operación de escritura no se completa hasta que todos los servidores de caché se actualizan sincrónicamente. Por lo tanto, no son tan rápidas como en otras topologías.
-El cliente se conecta solo a un servidorCada cliente de caché se conecta solo a un servidor del clúster según un algoritmo de equilibrio de carga determinado por los servidores de caché. Si este servidor de caché falla, el cliente se conecta al siguiente servidor de la lista. También puede especificar manualmente el servidor al que se conectará en el archivo de configuración de caché si no desea usar el equilibrio de carga.
La caché reflejada es un clúster de caché activo/pasivo de dos nodos, diseñado para entornos más pequeños. Proporciona fiabilidad de datos mediante replicación/duplicación asíncrona del nodo activo al pasivo. Es muy rápido tanto en lectura como en escritura (de hecho, sus operaciones de escritura son más rápidas que las de la caché replicada), pero no escala más allá de este clúster activo/pasivo de dos nodos.
NCache Caché reflejada para alta disponibilidad activa/pasiva de 2 nodos.
A continuación se muestran algunas de las características de Mirrored Cache.
-1 servidor activo y 1 pasivoLa caché reflejada solo tiene dos servidores: uno activo y el otro pasivo. Ambos tienen una copia completa de la caché. Si el servidor activo falla, el servidor pasivo se activa automáticamente. Y, si el servidor activo previamente caído vuelve a funcionar, se considera un servidor pasivo a menos que cambie esta designación mediante las herramientas de administración durante la ejecución.
-Conexiones de los clientes con el soporte de conmutación por errorCada cliente de caché se conecta únicamente al servidor activo del clúster para realizar sus operaciones de lectura y escritura. Si este servidor activo falla, todos los clientes se conectan automáticamente al servidor pasivo que ya se ha activado. Esta compatibilidad con la conmutación por error garantiza que la caché reflejada esté siempre activa, incluso si un servidor falla.
-Duplicación asíncronaCualquier escritura realizada en el servidor activo se replica asincrónicamente en el servidor pasivo. Esto garantiza que el servidor pasivo esté siempre sincronizado con los datos más recientes en caso de que el servidor activo deje de funcionar y el servidor pasivo deba activarse. La replicación asincrónica también implica un rendimiento más rápido, ya que las escrituras múltiples se realizan como una operación masiva en el servidor pasivo.
La caché de cliente es local en tu servidor web/de aplicaciones y se encuentra muy cerca de tu aplicación. Te permite almacenar en caché los datos que lees desde la caché distribuida (independientemente de la topología de caché). Si bien es local en tu aplicación, la caché de cliente no es independiente. Siempre está sincronizada con la caché en clúster. Esto garantiza que los datos de la caché de cliente nunca estén obsoletos.
Esto se puede considerar como una caché sobre caché, lo que mejora aún más el rendimiento y la escalabilidad de la aplicación. Si usa la caché de cliente en modo InProc, puede alcanzar la velocidad InProc. NCache Ofrece dos variantes de caché de cliente: la caché de cliente normal y la caché de cliente de datos completos. Cada una está diseñada para optimizar el rendimiento al reducir las llamadas de red y mantenerse sincronizada con la caché en clúster.
Caché de cliente regular
La caché de cliente regular actúa como caché local (L1) en el equipo cliente, manteniendo un subconjunto de datos de acceso frecuente cerca de la aplicación. Esto reduce las conexiones repetidas de la red a la caché agrupada (L2). Para mantener la coherencia, la caché de cliente se sincroniza con la caché agrupada mediante notificaciones de cambios. Dado que no almacena el conjunto de datos completo, todas las consultas se ejecutan en la caché agrupada (L2).
Caché de cliente de datos completos
La caché de cliente de datos completa va un paso más allá al almacenar en caché conjuntos de datos completos localmente en el equipo cliente. Ofrece las siguientes ventajas y opciones:
-Almacena en caché conjuntos de datos completos localmente:Almacena en caché todas las entradas de las clases .NET seleccionadas, lo que hace que los conjuntos de datos completos estén disponibles instantáneamente.
-Cerca de la velocidad de procesamiento:El caché de cliente de datos completo proporciona operaciones de lectura más rápidas y permite que las consultas SQL se ejecuten completamente en el caché de cliente, ya que el conjunto de datos completo está presente localmente.
-Sincronización con caché en clúster:Permanece completamente sincronizado con la caché en clúster para garantizar la coherencia.
-Aplicación estricta de consultasEsta aplicación garantiza que las consultas solo se ejecuten cuando el conjunto de datos completo esté disponible localmente. Si el conjunto de datos está parcialmente cargado, la consulta falla inmediatamente sin recurrir a la caché agrupada.
-Lecturas locales estrictasEsto obliga a que todas las operaciones de lectura se realicen estrictamente desde la caché del cliente. Si no se encuentra una clave localmente, se devuelve un error de caché en lugar de obtenerla de la caché agrupada.
Si bien es local para su aplicación, una caché de cliente no es independiente. En su lugar, siempre se sincroniza con la memoria caché en clúster. Esto garantiza que los datos en la memoria caché del cliente nunca se vuelvan obsoletos.
NCache Caché de cliente para rendimiento InProc de submilisegundos.
A continuación se muestran algunas de las características de Mirrored Cache.
-Bueno para leer casos intensivosLa caché de cliente es ideal para casos de uso intensivo de lectura. Sin embargo, si el número de escrituras es el mismo que el de lecturas, la caché de cliente es más lenta, ya que una operación de escritura implica la actualización de los datos en dos lugares.
-Velocidad más rápida como un caché local (InProc/OutProc)Una caché de cliente existe dentro del proceso de la aplicación (modo InProc) o local en el servidor web/de aplicaciones (modo OutProc). En cualquier caso, mejora significativamente el rendimiento de la aplicación en comparación con obtener los datos directamente de la caché agrupada. El modo InProc permite almacenar objetos en caché en el montón de la aplicación, lo que proporciona una velocidad InProc inigualable por cualquier caché distribuida.
-No es un caché independienteUna caché de cliente puede ser local, pero no es una caché independiente. Se sincroniza con la caché en clúster. Esto significa que, si otro cliente actualiza datos en la caché en clúster que usted tiene en su caché de cliente, esta le notifica que se actualice con la copia más reciente de esos datos. Esto se realiza de forma asincrónica, pero inmediata.
-Sincronización optimista/pesimista:De manera predeterminada, la caché del cliente utiliza sincronización optimista, lo que significa que NCache El cliente asume que los datos que contiene la caché de cliente son la copia más reciente. Si no contiene datos, los recupera de la caché en clúster, los guarda en la caché de cliente y los devuelve a la aplicación cliente. La sincronización pesimista implica que el cliente de caché primero comprueba si la caché en clúster contiene una versión más reciente de un elemento almacenado en caché. Si la contiene, la recupera, la guarda en la caché de cliente y la devuelve a la aplicación cliente. De lo contrario, devuelve lo que esté en la caché de cliente.
-Complemento sin ningún cambio de códigoUtilizar la caché de cliente no implica modificar el código de la aplicación. Solo requiere un simple cambio de configuración.
NCache logra escalabilidad lineal al usar un mapa de distribución de 1000 buckets para particionar datos entre múltiples nodos de servidor, lo que permite que el clúster maneje mayores cargas de transacciones a medida que se agrega nuevo hardware en tiempo de ejecución.
NCache utiliza una arquitectura 100% peer-to-peer donde cada servidor es un peer; si algún nodo (incluido el Coordinador del clúster) falla, los nodos restantes eligen automáticamente un nuevo coordinador y reequilibran el clúster a través de latidos basados en TCP para mantener un tiempo de actividad del 100%.
Si bien ambos proporcionan escalabilidad lineal, Partitioned Cache ofrece la mayor velocidad sin redundancia de datos, mientras que Partition-Replica Cache es la opción más popular porque equilibra el rendimiento extremo con la alta disponibilidad al crear réplicas pasivas de cada partición.
NCache Resuelve escenarios de cerebro dividido mediante un algoritmo de detección y recuperación inteligente que reconcilia automáticamente subgrupos divergentes y restaura la integridad de los datos sin requerir intervención manual.
An NCache La caché de cliente (L1) proporciona una velocidad InProc de submilisegundos al almacenar un subconjunto de datos a los que se accede con frecuencia directamente en el servidor de aplicaciones, lo que reduce drásticamente la latencia de la red al caché en clúster (L2).
Sí, NCache Admite agrupamiento dinámico, lo que permite la expansión o eliminación de membresías de servidores sin tiempo de inactividad al actualizar y propagar automáticamente el mapa de distribución del clúster a todos los clientes en tiempo real.