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.
NHibernate es una excelente herramienta ORM para su aplicación y simplifica sus estándares de codificación en diferentes equipos.
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.
Entonces, para superar estas limitaciones NHibernate le proporciona un proveedor de caché de nivel 2, donde puede conectar un caché de segundo nivel.
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.
Entonces, aquí tenemos un proveedor de caché de nivel 2 de NCache.
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.
Entonces, aquí hay un 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.
Por lo tanto, con los cambios de configuración, puede configurar una serie de funciones para el proveedor de caché de segundo nivel.
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.
Una vez que instale NCache, así es como se ve en su sistema.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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