El único propósito de NCache es proporcionar un rendimiento óptimo para su aplicación. Y para alcanzar estos números de rendimiento, necesita que su entorno de almacenamiento en caché pueda escalar de manera fácil y rentable.
As NCache es un almacén de datos en memoria, la primera preocupación es la memoria limitada que se le ha asignado en una caja física. El segundo es el límite computacional. Todos sabemos eso NCache, además de proporcionar operaciones CRUD básicas, también es compatible con muchas características avanzadas como Pub / Sub, Consultas, llamadas de búsqueda basadas en criterios, etc. Y cuando las solicitudes de los clientes sobre estas características se vuelven muchas, aumenta la necesidad de más potencia de procesamiento. Esto significa que, tarde o temprano, su servidor de caché alcanzará su límite máximo de procesamiento. Cuando esto pasa, NCache no te abandona. En cambio, hay una solución para esto y estoy aquí para explicártelo.
NCache Detalles Almacenamiento en caché distribuido en .NET Altamente disponible NCache
Escalabilidad lineal en NCache
Cuando su entorno alcanza los límites mencionados anteriormente, NCache le permite agregar un nuevo nodo de servidor (o varios nodos) a su clúster de caché. Agregar un nuevo servidor es básicamente agregar un nuevo nodo físico al clúster a través de NCache Web Manager or NCache Herramienta PowerShell eso mejora la memoria general y le brinda otro recurso para abordar el exceso de solicitudes entrantes.
Esto asegura la escalabilidad lineal. ¿Cómo? Porque cuantos más nodos agregue, mejor rendimiento obtendrá. En NCache, agregar nodos adicionales al clúster no genera ninguna sobrecarga que provoque que el rendimiento constante decaiga. Y de acuerdo con los puntos de referencia de rendimiento realizados recientemente, NCache alcanzado 2 millones de operaciones/segundo con 5 nodos de servidor! Si eso no es una victoria, entonces no sé qué es.
Y la mejor parte de todo esto viene con el lugar de trabajo dinámico naturaleza de NCache agrupamiento Esto significa que no tiene que detener los procesos, las aplicaciones o los nodos existentes simplemente para agregar un nuevo nodo al clúster.
NCache Detalles NCache Puntos de referencia de rendimiento NCache Puntos de referencia de rendimiento: vídeo
Profundicemos un poco más e iluminemos qué NCache características aportan a la tabla de escalabilidad.
Operaciones de cliente para escalabilidad
NCache El cliente tiene esta característica incorporada que se conecta automáticamente con cada nodo del servidor directamente. Y NCache El mapa de distribución permite al cliente saber qué nodo tiene los datos que necesita. Por lo tanto, la operación que proviene del cliente no pasa por múltiples saltos y nodos. En cambio, toma un salto directo al servidor que tiene los datos específicos. Esta funcionalidad simple pero inteligente ayuda a escalar su entorno.
Paralelismo para Escalabilidad en Operaciones
NCache soporta varias operaciones avanzadas como Consultas, Operaciones masivas, Etiquetasy muchas otras operaciones que deben realizarse en varios nodos. En lugar de enviar estas operaciones a cada nodo en forma de Round Robin, NCache le permite enviar cada operación a cada nodo en paralelo.
Por ejemplo, un cliente desea consultar los datos almacenados en la memoria caché, por lo que envía esa consulta a todos los nodos del clúster. Cada nodo ejecutará esa consulta localmente en el conjunto de datos que ha almacenado y compartirá el resultado con el cliente. El cliente fusiona todos los resultados provenientes de todos los nodos del servidor y devuelve un solo resultado a todas las aplicaciones finales. Cada nodo ejecuta la misma consulta en paralelo, lo que induce escalabilidad y acelera el sistema.
Canalización para operaciones de escalado
NCache usos Tubería para crear fragmentos de operaciones que deben enviarse a través de una red en una sola llamada TCP. Esta técnica reduce la sobrecarga de enviar múltiples solicitudes una por una y esperar su reconocimiento.
Tomemos un ejemplo aquí. decir que el NCache el cliente envía 100 operaciones al servidor, lo que normalmente significa que el cliente realizará 100 operaciones de E/S. Para el éxito de estas operaciones, cada transacción del usuario al modo kernel consumirá una gran cantidad de energía de la CPU. Demasiado consumo de CPU es costoso y reducirá el rendimiento de mi aplicación.
Aquí, lo que hace la canalización del lado del cliente es combinar todas las operaciones que van a un servidor y envía ese fragmento en una llamada de E/S dedicada. La canalización del lado del servidor se asegura de que el servidor reciba múltiples llamadas de E/S en una sola llamada. Las respuestas que envían los servidores también se reciben juntas. No solo esto, sino que el servidor también intenta generar respuestas máximas a esas operaciones entrantes de una sola vez.
Entonces, las 100 operaciones que se enviaron al servidor en llamadas dedicadas son recibidas por el servidor en una sola llamada. Y los resultados de las operaciones que obtuvo, son enviados en una sola llamada por el servidor. Esta técnica ayuda a escalar el sistema enormemente.
NCache Detalles Operaciones del lado del cliente Canalización en NCache
Replicación escalable en segundo plano en Partition-Replica
Cualquiera que sea la operación de actualización que el cliente realice en un nodo de servidor debe replicarse para tolerancia a fallas y alta disponibilidad para el servidor de réplica. NCache El servidor realiza esta replicación en segundo plano sin la participación del cliente. Además de ser un proceso en segundo plano, esta replicación se realiza en masa para ahorrar el máximo costo. Este proceso induce la escalabilidad ya que todas las operaciones se escalan a través de la replicación en segundo plano y también hace que su caché esté altamente disponible. ganar-ganar
Almacenamiento en caché de escritura posterior para escalabilidad
Si el cliente desea escribir datos en la base de datos, la misma solicitud enviada al servidor escribirá esos datos en el caché y la base de datos.
Una implementación asíncrona de esta característica es Escritura posterior que le permite a su servidor acceder a la base de datos sin ningún retraso computacional. De esta manera, su base de datos y caché permanecen sincronizados mientras mantienen el mismo rendimiento que deseaba de un caché en memoria.
Si NCache El cliente envía al servidor de caché una solicitud con la escritura diferida habilitada, el servidor escribe esos datos en el caché, devuelve el control al cliente y utiliza un sistema de procesamiento por lotes en segundo plano para asegurarse de que los datos también se almacenen en la base de datos. Este mecanismo es lo que hace que su aplicación sea escalable.
Escalabilidad a través de la agrupación de objetos en la gestión de memoria
En el entorno .NET, cuando se activa el Recolector de basura (GC) automático, se detienen todas las actividades que se realizan en la aplicación, lo que crea pausas en el cálculo de datos en memoria. Estas pausas causan un gran impacto en el rendimiento de su aplicación. Cuantos más objetos cree, más se activará el GC y mayor será este impacto.
Para evitar estas largas pausas del GC, NCache al ser un caché nativo de .NET, utiliza la técnica de agrupación de objetos como su propia gestión de memoria. En este mecanismo, NCache el servidor agrupa los objetos y los reutiliza en lugar de crear otros nuevos, lo que da como resultado una menor necesidad de invocar GC. Cuanto menor sea esta necesidad, más rendimiento obtendrá de su aplicación, por lo tanto, más escalabilidad.
NCache Detalles Operaciones del lado del servidor Canalización en NCache
Caché del cliente para inducir la escalabilidad
En cuanto a la escalabilidad, Caché de cliente demuestra ser una de las características más importantes de NCache.
El caché del cliente almacena los datos utilizados con más frecuencia de su caché en clúster en la misma máquina donde se ejecuta su aplicación. El uso de Client Cache entre su aplicación y el caché en clúster le brinda un recurso de caché local que reside cerca de su aplicación. Este caché entretendrá la mayoría de las solicitudes de lectura de su aplicación, lo que inevitablemente resultará en una reducción de costos de E/S. Por lo tanto, no solo obtiene un acceso rápido a los datos actualizados, sino que su aplicación también se amplía.
Este gráfico de escalabilidad se puede optimizar aún más si pasa de la memoria caché del cliente OutProc a la memoria caché del cliente InProc al reducir el costo de acceso al nodo local.
Escalabilidad final en NCache
Mientras obtiene lo mejor de su aplicación, puede encontrar dos contratiempos importantes. O la carga computacional en su caché aumenta o alcanza los límites establecidos de almacenamiento de datos, los cuales pueden mejorarse significativamente escalando NCache. Tienes control total sobre NCache que es rico en funciones listas para traer escalabilidad en su entorno. ¿Entonces, Qué esperas? ¡Consigue NCaching!
NCache Detalles Descargar NCache Comparación de ediciones