NCache como caché de segundo nivel de NHibernate

Aprende cómo usar NCache como caché de segundo nivel para NHibernate. NCache proporciona un proveedor de caché de segundo nivel de NHibernate que puede conectar a través de cambios en web.config o app.config. NCache también ha implementado la función de sincronización de la base de datos para que pueda especificar qué clases deben sincronizarse con la base de datos. NCache le permite especificar SqlDependency o cualquier dependencia de base de datos compatible con OLEDB para esto.

NCache es una solución de caché distribuida empresarial, diseñada para la escalabilidad y el rendimiento de su aplicación. En el tutorial de hoy, veremos cómo podemos escalar las aplicaciones de NHibernate utilizando un proveedor de caché de nivel 2 de NCache.

Limitaciones con NHibernate L1 Cache

NHibernate es una excelente herramienta ORM para su aplicación y simplifica sus estándares de codificación en diferentes equipos.

Limitaciones con NHibernate L1 Cache
Limitaciones con NHibernate L1 Cache

NHibernate le brinda un caché en proceso de forma predeterminada donde puede mantener los datos temporalmente dentro de su proceso de trabajo para cada transacción. Esto funciona bien para aplicaciones de servidor único, pero se convierte en un cuello de botella de rendimiento para aplicaciones empresariales.

En las aplicaciones empresariales, normalmente tiene varios servidores web en un escenario de equilibrio de carga y sus múltiples procesadores de trabajo se ejecutan en cada uno de ellos. Por lo tanto, da como resultado la colocación de múltiples consultas redundantes en su base de datos para los mismos datos de cada proceso de trabajo, lo que ralentiza su aplicación como resultado neto y también da como resultado un almacenamiento redundante individualmente en cada lado del proceso de trabajo en su propia memoria, y usted no puede escalar cuando necesita aumentar su base de usuarios.

Modelo de proveedor de caché L2 de NHibernate

Entonces, para superar estas limitaciones NHibernate le proporciona un proveedor de caché de nivel 2, donde puede conectar un caché de segundo nivel.

  • Idealmente, la caché L2 debería ser
    • fuera de proceso
    • en memoria
    • Caché distribuida
  • Confiable y Altamente Disponible
  • Escalable

Modelo de proveedor de caché NHibernate L2

La memoria caché de segundo nivel se utiliza junto con la memoria caché en proceso. Cada vez que obtiene los datos de su base de datos por primera vez, NHibernate envía automáticamente esos datos a la caché de segundo nivel, que comparten todos los procesos de trabajo.

Idealmente, la caché de segundo nivel debería ser una caché en memoria, ya que desea aumentar el rendimiento de su aplicación. Debe ser un caché fuera de proceso que no se vacíe incluso si su proceso de trabajo se recicla. Debe distribuirse, por lo que puede compartirse entre múltiples procesos de trabajo en diferentes servidores web.

Recuerda que solo puedes aumentar tu escalabilidad y rendimiento de la aplicación, si su infraestructura de almacenamiento en caché subyacente es altamente escalable y está orientada al rendimiento.

NCache - Proveedor de caché NHibernate L2

Entonces, aquí tenemos un proveedor de caché de nivel 2 de NCache.

NCache - Proveedor de caché NHibernate L2
NCache - Proveedor de caché NHibernate L2

Esta es una solución de almacenamiento en caché distribuida en memoria fuera de proceso, que tiene un agrupamiento dinámico capacidad y se extiende sobre múltiples servidores. La carga de transacciones de su aplicación se distribuye por igual, a todos los servidores de caché en tiempo de ejecución, para obtener un mayor rendimiento y NCache mantiene los datos replicados en todo el clúster para brindarle una conmutación por error consistente en caso de que pierda alguno de sus servidores de caché.

NCache admite modos de replicación sincrónicos y asincrónicos. Por lo tanto, puede mantener los datos replicados sin sobrecarga de rendimiento. El rendimiento de NCache crece linealmente, cuando agrega más servidores al nivel de almacenamiento en caché. No hay límite en el tamaño de la memoria caché, por lo que puede crecer tanto como desee en el tamaño de sus datos.

También puede incluir más servidores en tiempo de ejecución en el clúster de caché de forma dinámica, para aumentar la capacidad transaccional y tener más memoria.

También le brinda un monitoreo de estilo de tablero, que lo ayuda con un vistazo rápido a ver el rendimiento del caché, la actividad de su aplicación cliente en el caché y los diversos recursos del sistema consumidos por el caché.

La imagen del lado derecho muestra el Topología de réplica de partición, que mantiene los datos particionados y replicados en varios servidores. Partition-Replica es la topología más popular dentro NCache.

NCache Caché distribuida de nivel 2 para NHibernate

Entonces, aquí hay un diagrama de arquitectura de alto nivel.

Diagrama de arquitectura de alto nivel
Diagrama de arquitectura de alto nivel

Cuando conecta este proveedor de Nivel 2 desde NCache en su aplicación empresarial, no requiere ningún cambio de código en su aplicación. Solo necesita tener algunos cambios de configuración en su web.config or aplicación.config, hablaremos de ello. Por lo tanto, no hay más llamadas redundantes a su base de datos, si ya obtuvo los datos en la transacción anterior.

En una granja web de equilibrio de carga como esta, NHibernate envía automáticamente los datos a la caché de segundo nivel, una vez que los obtiene por primera vez de su base de datos y todos los servidores web comparten esta caché. Por lo tanto, lo ayuda a reducir la carga en su base de datos.

NCache Funciones configurables de caché de nivel 2

Por lo tanto, con los cambios de configuración, puede configurar una serie de funciones para el proveedor de caché de segundo nivel.

  • Usar regiones de NHibernate
  • Expirar objetos de caché con:
    • Tiempo de deslizamiento o muerte
    • Caducidad absoluta
  • Sincronización de base de datos con:
    • Dependencia SQL
    • Dependencia de sondeo
  • Usa Sincronizar. / Asíncrono. operaciones de caché
  • Establecer prioridad de elemento de caché

NCache Funciones configurables de caché de nivel 2

Por ejemplo, puede usar regiones de NHibernate, puede configurar objetos de caché para que caduquen con un tiempo de caducidad absoluto o inactivo, también puede configurar la dependencia de SQL para sincronización de base de datos. Se admiten operaciones de caché síncronas y asíncronas y también puede configurar la prioridad de elementos de caché.

Por lo tanto, lo guiaré a través de una sesión práctica rápida paso a paso para configurar NCache Proveedor de caché de nivel 2 para una aplicación de muestra.

Te sugiero que descargue la edición empresarial gratuita de 30 días de nuestro sitio web. Este es un producto completamente funcional y rico en funciones, incluso en los días de evaluación.

Ejemplo de integración de NHibernate en NCache

Una vez que instale NCache, así es como se ve en su sistema.

Ejemplo de integración de NHibernate
Ejemplo de integración de NHibernate

Instala un montón de muestras de Visual Studio. Vayamos al ejemplo de NHibernate, por ejemplo, abierto en Visual Studio. Es posible que deba reconstruir la muestra si está utilizando Video Studio 2010. Es posible que también necesite la conversión.

Echemos un vistazo a los cambios de configuración que debe realizar para su app.config para el proveedor de caché de segundo nivel de NCache.

Archivo app.config
Archivo app.config

Todo lo que necesita para definir una sección llamada 'ncache' para el proveedor de caché como este en su app.config y luego puede agregar una propiedad para el proveedor de caché como este.

También definimos la NCache sección en sí con múltiples regiones. Estas regiones son las regiones NHibernate. Cada región se asigna a un nombre de caché diferente de NCache.

Entonces, tenemos una región predeterminada aquí, que atiende a todas las entidades en las que no especifica ninguna región de NHibernate y tenemos una región de nombre específica como esta región de 'Cliente'. Dentro de cada región, puede especificar varias propiedades para cada una de las clases que se encuentran en esa región.

N Regiones de Hibernate
N Regiones de Hibernate

Por ejemplo, configure la dependencia de SQL para eso, configure la prioridad de los elementos de caché, use Sincrónico o Asincrónico, configure la estrategia de caducidad para que sea tiempo relativo o inactivo.

Ejecutar los cachés

Entonces, para ejecutar la muestra, lo que necesita es tener un par de cachés. El caché predeterminado y 'myPartitionReplicaCache' en ejecución, dentro de su NCache Manager .

Vamos a NCache Gerente, configuré esto con 'myPartionedReplicaCache' y caché predeterminado con 2 configuraciones de servidor en este momento. Ejecutemos su aplicación, veamos la lista de clientes, por ejemplo, solo mire la Solicitud/seg que va a ambos servidores que le envían los datos, una vez que los obtenga de la base de datos.

Solicitudes/seg igualmente respondidas
Solicitudes/seg igualmente respondidas

Por lo tanto, hay alrededor de 49 más 42 elementos en ambos servidores, distribuidos equitativamente en ambos y, si vuelvo a ejecutar la consulta, podré obtener estos resultados directamente desde el clúster de caché de segundo nivel, en lugar de ir a su base de datos. Entonces, solo mire las Solicitudes/seg respondidas por igual, de ambos Servidores.

Prueba de confiabilidad de caché

Podemos tener la prueba de confiabilidad. Podemos deshabilitar uno de los servidores de caché y aun así verá que el clúster de caché es capaz de proporcionarle los elementos y recuperarlos de los servidores restantes.

Para eso tendremos que detener uno de los servidores y eso es lo que haré. Tenemos los 2 servidores, 21 y 22. Voy a detener el 22, como si se hubiera salido del clúster y luego volver a ejecutar la consulta.

Detención del servidor de caché
Detención del servidor de caché

Verá 49 más 42, los 91 artículos todavía están disponibles en uno de los servidores. Se han recuperado del otro servidor ahora y si vuelvo a ejecutar la consulta, veo la lista de clientes nuevamente, debería poder obtener todos los elementos de este servidor, del clúster. Puede ver las Solicitudes/seg en curso, Fetches/seg en curso, desde este servidor.

Prueba de confiabilidad exitosa
Prueba de confiabilidad exitosa

Por lo tanto, ahora tiene el almacenamiento en caché confiable, sin importar si uno de sus servidores de caché no está disponible en tiempo de ejecución. Los otros servidores de caché pueden recuperar los datos y responder bien a sus consultas. Al mismo tiempo, está reduciendo la carga en su base de datos. No más consultas redundantes van a su base de datos.

Código de integración para NHibernate en NCache

Proporcionamos el código de integración para NHibernate en NCache, como puede ver en el proyecto que abrí y este código fuente está disponible para que lo optimice o personalice para sus versiones específicas de NHibernate.

Código de integración para NHibernate en NCache
Código de integración para NHibernate en NCache

Si vas a la NCache carpeta de instalación, aquí tenemos el código. Entonces, muchas gracias por su tiempo hoy y hoy vimos, cómo NCache puede ser útil. Qué tan confiable y escalable NCache es, aumentar el rendimiento de su aplicación NHibernate. Estén atentos para más actualizaciones de NCache. Discutiremos varias características en los próximos tutoriales. Si tiene alguna pregunta, envíenos un correo electrónico a support@alachisoft.com

© Copyright Alachisoft 2002 - Todos los derechos reservados. NCache es una marca registrada de Diyatech Corp.