NCache Arquitectura

Espectáculo grabado
Por Ron Hussain y Zack Khan

El seminario web de hoy se basará en NCache Arquitectura. Ahora, cubriremos una descripción general del almacenamiento en caché distribuido y cómo resuelve los cuellos de botella en .NET y .NET Core. Repasaremos los casos de uso comunes, así como la arquitectura de caché distribuida y los detalles de la agrupación en clústeres, así como cualquiera de las preguntas que pueda tener con respecto no solo a NCache, pero el almacenamiento en caché en general. Ahora, en cualquier momento durante este seminario web, tenemos la opción de hacer preguntas aquí en la pestaña de preguntas de GoToWebinar, así que eche un vistazo a la pestaña de preguntas que le resulte más conveniente. Y, una vez que escriba una consulta, podré mencionarla durante la presentación para que Ron o yo la respondamos. También tenemos un poco de tiempo al final de esta sesión para poder responder a cualquier otra pregunta que surja, pero esperamos pasar un buen rato.

Entonces, sin más preámbulos, se lo paso a Ron y comencemos. Muy bien, gracias Zack. Entonces, como Zack acaba de mencionar, el tema de hoy es NCache arquitectura. En este seminario web, cubriré con gran detalle cómo NCache La agrupación en clústeres funciona, cuáles son las topologías más comunes entre las que puede elegir y uno de los principales beneficios de NCache en términos de los casos de uso de su aplicación. ¿Cuáles son esos casos de uso y cómo puede aprovecharlos al máximo? NCache dentro de las aplicaciones de su servidor?

Entonces, espero que todos puedan ver mi pantalla. Si puedo obtener una confirmación rápida sobre eso, comenzaré rápidamente con esto. Sí, creo que todos estamos bien si puedes. Ahí lo tienes, creo. Sí, se ve bien. Perfecto. Bien, entonces comencemos rápidamente con esto.

El problema de la escalabilidad

Muy bien, primero que nada definamos qué NCache ¿es? Y para eso tendré que seguir adelante y definir qué es un problema de escalabilidad y luego cómo NCache es capaz de resolver ese problema de escalabilidad. Entonces, en una arquitectura de servidor típica donde hay aplicaciones implementadas, generalmente hay más de una instancia o más de un servidor, ya sabes, si esas aplicaciones están implementadas. Por lo tanto, es seguro decir que su nivel de aplicación es algo muy escalable.

El problema de la escalabilidad
El problema de la escalabilidad

Puede agregar tantos servidores como desee en un nivel de aplicación. Puede crear un formulario web, un formulario de aplicación, donde varios servidores de aplicaciones o servidores web alojan la misma aplicación, pero trabajan en equipo y dividen la carga de solicitudes entre ellos. Y, si opta por una arquitectura más nueva, incluso con una arquitectura de microservicios, tendrá la capacidad de escalar individualmente sus servicios de aplicaciones, microservicios que necesitan más computación o más capacidad de manejo de solicitudes.

Por tanto, el nivel de aplicación es muy escalable. Es linealmente escalable. A medida que crece, podrá manejar más y más cargas de solicitudes. El problema entra en juego cuando se trata de una base de datos, como una base de datos relacional. Porque todas estas aplicaciones, independientemente del nivel de escalabilidad que sean, siempre tendrían que comunicarse con una base de datos de backend. Y, cuando hablan con una base de datos backend, suele ser una única fuente. Y eso no es muy escalable. Es muy bueno para el almacenamiento; puedes tener muchos recursos de disco. Por lo tanto, puede obtener beneficios de almacenamiento. Pero cuando tienes una enorme carga transaccional en tus aplicaciones, y eso se traduce en una carga transaccional de la base de datos, las bases de datos tienden a ahogarse. Y ese es el principal problema, ya sabes, donde la aplicación tiene dificultades con el manejo de solicitudes. No es escalable y la experiencia del usuario final también se ve comprometida.

NoSQL databases son de alguna manera resolver este problema. Puede tener una base de datos SQL, pero eso requiere que su aplicación tenga una nueva arquitectura de tal manera que deje de usar una base de datos relacional y comience a usar una NoSQL database y ese es un gran proyecto. Entonces, NoSQL no siempre es una solución a un problema de escalabilidad.

La solución: NCache Caché distribuida

Entonces, ¿qué debemos hacer ahora que tenemos esto? La solución es muy simple: deberías tener un caché distribuido en memoria como en NCache. En primer lugar, está en memoria, por lo que el beneficio número uno que obtiene es que aumentará el rendimiento de su aplicación. Es súper rápido en comparación con una base de datos relacional. Y el principal beneficio es que es linealmente escalable. A diferencia de un servidor de base de datos, que suele ser de una única fuente. NCache puede residir en varios servidores. Te permite crear un clúster de caché que puede ejecutarse en varias cajas. Y, como sabe, sus requisitos o necesidades aumentan, cuando necesita tener más capacidad de manejo de solicitudes que deben manejarse desde su nivel de aplicación, puede agregar más servidores en tiempo de ejecución en el clúster de caché.

La solución de escalabilidad
La solución: NCache Caché distribuida

Lo bueno de NCache es que lo utilizas además de una base de datos relacional; o una base de datos back-end, no reemplaza sus fuentes de datos convencionales. Es algo que complementará las fuentes de datos existentes de tal manera que pueda aumentar el rendimiento de sus aplicaciones. Puede aumentar la capacidad de manejo de solicitudes para sus aplicaciones. Y, a medida que crece en el extremo de la aplicación, siempre puede aumentar la cantidad de servidores en el clúster de caché, porque estos son servidores en un clúster, por lo que trabajan como un equipo. Son capaces de dividir la carga de solicitudes entre ellos de tal manera que, como resultado, le brindan escalabilidad lineal. Entonces, NCache Es un modelo linealmente escalable y muy fácil de usar. Hablemos de cómo funciona la arquitectura de implementación. Entonces, en un entorno de producción típicamente grande, así es como NCache se vería así:

NCache Enterprise
NCache en la empresa

Tendrías un montón de servidores. Estos podrían ser servicios de Windows o Linux, diseñados de tal manera que NCache se encuentra entre su aplicación y la base de datos. Por ejemplo, puedes empezar con dos o tres NCache servidores, y luego puedes crecer hasta cuatro o cinco NCache servidores y diferentes tipos de aplicaciones (por ejemplo, su ASP.NET o ASP)..NET Core aplicaciones web, su .NET o .NET Core servicios, o .NET/.NET Core aplicaciones de servidor. O incluso podría ser Java o Node.js. Entonces, esas aplicaciones también pueden aprovechar el almacenamiento en caché distribuido.

NCache en sí está escrito en .NET/.NET Core. Se ejecuta tanto en Windows como en Linux. Del mismo modo, tus aplicaciones podrían estar en cualquier plataforma y funcionarían sin problemas. Normalmente, le recomendamos que tenga NCache en servidores de configuración dedicados, que alojan solo NCache, para que tenga naturaleza dedicada de recursos para NCache. Y luego sus servidores de aplicaciones están en un nivel separado. De modo que también tenga recursos dedicados para sus aplicaciones. Pero también existe otra opción de implementación, donde para configuraciones más pequeñas puede tener NCache sentado en las mismas cajas, donde también se ejecutan sus aplicaciones. Entonces, esa es siempre una posibilidad con NCache. Pero, como se mencionó, la opción recomendada es tener un nivel de caché separado, como se muestra en el diagrama. Y luego NCache se encuentra entre su aplicación y la base de datos. La idea aquí es que guarde en caché los datos que utilice con más frecuencia dentro de sus aplicaciones. Podrían ser datos de referencia o datos transaccionales. Por "referencia", me refiero a datos que requieren más lectura intensiva, y por "transaccional", me refiero a datos que requieren lectura y escritura intensivas. Y, una vez que sepa qué datos almacenar en caché, puede llamar a esos datos su "conjunto de trabajo". Por primera vez, puede recuperar esos datos de la base de datos y luego también puede agregarlos dentro NCache y las llamadas posteriores se pueden manejar a través de NCache Sólo que te ahorras costosos viajes a la base de datos. Esto es lo que normalmente denominamos patrón "caché aparte", donde cualquier cambio que realice también se propaga al caché y luego a la base de datos. Y ninguna base de datos existe en el caché, siempre la recuperas de la base de datos y la guardas dentro. NCache pero siempre verificas el caché primero. Entonces, si encuentra datos dentro del caché, no tiene que ir a la base de datos y regresa desde ese punto.

Lectura/escritura

El enfoque alternativo es utilizar "lectura" o "escritura", que se representa aquí con líneas de puntos. NCache tiene una característica que puede automatizar esto, donde le brinda la opción de "caché" y se denomina "lectura" para lecturas y "escritura" para escrituras. Eso funcionará de tal manera que siempre use el caché como su fuente principal e implemente un controlador de lectura y escritura en el caché y que se encargará de actualizar las fuentes de datos del backend. Entonces, independientemente de las operaciones de lectura que realice, si los datos no existen, irán sin problemas a su base de datos según su proveedor, los recuperarán para su aplicación y también regresarán a la aplicación y también los almacenarán dentro. NCache. Para las actualizaciones, actualizará el caché y la base de datos de forma sincronizada o asíncrona, según el modelo que haya llamado desde la aplicación.

Por lo tanto, compartiré más detalles sobre los patrones de lectura, escritura y almacenamiento en caché, pero solo para brindarle una imagen de implementación de alto nivel, así es como lo vería. NCache implementado en un formulario de servidor, donde múltiples aplicaciones o formularios de solicitud, pueden conectarse a NCache y luego pueden aprovechar el almacenamiento en caché distribuido, donde el acceso a la memoria mejora el rendimiento de las aplicaciones. Además, tener varios servidores en el nivel de caché puede brindarle escalabilidad lineal. Espero que haya quedado claro; por favor hágamelo saber si hay alguna pregunta. Bueno, afortunadamente, en este momento parece que no hay ninguno, así que siéntete libre de continuar. Muy bien.

NCache Números de escalabilidad

Así que a continuación hablaré de NCacheLos números de escalabilidad. Acabamos de mencionar que NCache es capaz de resolver el problema de escalabilidad de su aplicación. Entonces, NCache en sí mismo es linealmente escalable. Entonces, dado que el nivel de aplicación es escalable, ya sabes, al tener un cuello de botella en la base de datos resuelto a través de un modelo linealmente escalable, aquí hay algunos números que puede tomar como referencia. Estas fueron nuestras pruebas comparativas que realizamos en nuestro entorno de control de calidad. Usamos servidores con mucha CPU y RAM para poder aprovecharlos y usarlos en una situación de carga alta. Comenzamos con un servidor y seguimos aumentando la carga de aplicaciones con dos servidores. Tan pronto como, un conjunto de servidores alcanzó su capacidad máxima de CPU y RAM, ese fue el punto en el que agregamos otro servidor.

NCache Números de escalabilidad
NCache Números de escalabilidad

Ésa es la regla general; donde puede seguir usando los servidores de caché existentes, comience con dos NCache servidores, y cuando ves que esos dos servidores están al máximo de su capacidad de hardware, si tu CPU está al máximo o tu RAM, ese es el punto en el que tomas una decisión que ahora necesito escalar y Es necesario agregar un tercer servidor en el clúster de caché. Esto es exactamente lo que hemos hecho con un tamaño de objeto promedio de 1 kilobyte, seguimos aumentando la carga de aplicaciones y seguimos aumentando el número de servidores. Hasta que el conjunto de servidores dado llegó al máximo. Y estos no fueron datos instantáneos; Se trataba de datos de una aplicación de la vida real, pero simulados en nuestro laboratorio de control de calidad. Entonces, con dos servidores, con tres, cuatro, cinco, hasta cinco servidores, pudimos manejar 2 millones de solicitudes por segundo con un tamaño de objeto promedio de 1 kilobyte.

Entonces, fue una combinación de lecturas y escrituras aplicadas consistentemente en el caché. En total, se logró un rendimiento de 2 millones de solicitudes por segundo. Y, al mismo tiempo, sin comprometer el rendimiento. Entonces, el rendimiento no es sólo tener muchas solicitudes por segundo; pero la latencia de las solicitudes individuales también debe mantenerse y debe ser súper rápida. En nuestro sitio web se publica una demostración en vídeo de esto, así como un documento técnico (Mira aquí). Y eso es algo que usted también puede revisar.

Usos comunes de la caché distribuida

Bien, hablemos de algunos de los casos de uso comunes de NCache.

  • Almacenamiento en caché de datos de aplicaciones

    El caso de uso número uno es el almacenamiento en caché de los datos de la aplicación, lo llamamos Almacenamiento en caché de datos de aplicaciones. Estos son los datos que provienen de una base de datos backend. Ya hemos establecido que la base de datos es lenta en general porque está basada en disco; en comparación, la RAM es una fuente más rápida. El otro problema es que la base de datos tiende a ahogarse cuando hay mucho tráfico. Si tiene mucha carga transaccional y hay un solo servidor, se espera que no le brinde el rendimiento necesario en el extremo de la aplicación. Por lo tanto, tiene mucho sentido almacenar en caché los datos de la aplicación dentro de sus aplicaciones usando NCache. Es muy sencillo; tu usas NCache API y simplemente llamas al caché. Usted se conecta al caché llamando a las API de inicialización del caché. Una vez que esté conectado al caché, podrá llamar 'caché.Agregar, caché.Actualizar, caché.Eliminar"O"caché.Obtener' para recuperar datos del caché. Entonces, les mostraré algunos ejemplos hacia el final. Pero la idea aquí es que cualquier dato que crea que va a leer más de una vez, ya sean datos de referencia o datos transaccionales. Para datos de referencia, NCache agregará mucho valor porque no tiene que volver a la base de datos para recuperar ningún cambio.

    Usos comunes
    Usos comunes de la caché distribuida

    Así pues, los datos del caché se podrán utilizar durante un período de tiempo más largo. Y, mientras usas datos de NCache, no es necesario ir a la base de datos backend. Eso mejora el rendimiento de su aplicación. Y le brinda escalabilidad porque NCache es escalable en comparación.

    Por lo tanto, es muy intuitivo almacenar en caché todos sus datos de referencia, pero también le recomendamos que almacene en caché algunos o incluso la mayoría de sus datos transaccionales. Según nuestra experiencia, recomendamos almacenar en caché cualquier dato que lea más de una vez, incluso si es algo que leerá dos o tres veces. Porque incluso si se está cambiando en la base de datos, y después de ese cambio, si lee más de una vez (dos o tres veces), tiene mucho sentido almacenar en caché esos datos, de modo que no tenga que hacerlo. vaya a la base de datos backend. Y tenemos funciones integradas NCache lo que también puede brindarle una sincronización del 100% con la base de datos. Eso es algo que también puedes considerar siempre.

    Ron, me llegó una pregunta rápida, principalmente:
    ¿Tengo que ir siempre a mi caché agrupada a través de la red? Tengo miedo de que los problemas de red provoquen que mis aplicaciones no funcionen. ¿Existe alguna forma de mantener algunos de mis datos localmente?

    Bien, normalmente, la implementación predeterminada es que recomendamos que tenga NCache en casillas separadas, y luego su solicitud en casillas separadas, ¿verdad? De modo que, cuando NCache Se basa en el protocolo TCP, por lo que es una llamada de red. Hay una característica llamada "Client-Cache", que es un caché local que se encuentra en los cuadros de la aplicación. Y, en algunos casos, si realmente necesita más artistas y realmente no desea tener ningún tipo de latencia causada por la red, también se puede hacer "en proceso", lo que significa que permanecerá dentro de su proceso de solicitud. Entonces, cuando eso sucede, el subconjunto de datos se introduce automáticamente en la memoria caché del cliente. Entonces, eso salvará cualquier comunicación entre procesos. Y luego también ahorrará cualquier comunicación de red o gastos generales de red. Entonces, tenemos una característica; eso es algo que cubriré una vez que pasemos a nuestras topologías. Compartiré algunos detalles más, pero solo para brindarles una descripción general rápida, así es como funciona la caché del cliente. Es un caché que se encuentra en el mismo cuadro donde están sus aplicaciones. Y la idea aquí es que no requiere viajes frecuentes a la red si tiene habilitada la caché del cliente. Y esto funciona sin ningún cambio de código. Entonces, espero que eso responda la pregunta. Por favor, avíseme si hay más preguntas. Sí, suena bien. Ron, llévatelo. Muy bien.

  • ASP.NET y ASP.NET Core Almacenamiento en caché

    El siguiente caso de uso de NCache está en una aplicación web. Si existen, ya sabes, algunos requisitos para almacenar en caché los datos del usuario, ¿verdad? Y normalmente es ASP.NET o ASP..NET Core estado de sesión. Ahora bien, estos datos no pertenecen a la base de datos porque son datos transitorios. Son datos que un usuario construirá y permanecerán en el alcance de la aplicación mientras ese usuario esté activo. En algunos casos, puede conservarlos en la base de datos desde un punto de vista histórico, pero en la mayoría de los casos, los datos pertenecen a un usuario.

    Entonces, Microsoft ASP.NET o ASP.NET Core sesión. Hay algunas opciones que puede usar en el servidor de estado, puede usar en proceso, puede usar un servidor de base de datos, todas estas tienen opciones y tienen problemas. Por ejemplo, en proceso es un único punto de falla; Tienes que usar el equilibrio de carga de sesión fija. ASP.NET State Server vuelve a ser un único punto de error y, ya sabes, no es escalable. La base de datos es una opción, nuevamente no es un punto único de falla porque puede hacer una copia de seguridad, pero en algunos casos, podría ser un punto único de falla, pero es lento y no escalable. Entonces, ¿qué debemos hacer aquí? De nuevo, considere usar NCache para ASP.NET y ASP.NET Core almacenamiento en caché del estado de la sesión. Funciona de tal manera que conectas nuestro proveedor. Es una opción sin cambio de código, pero tan pronto como lo conectes NCache dentro de tus aplicaciones, NCache se convierte en el almacenamiento principal de su sesión. Y la idea aquí es que será súper rápido porque está basado en RAM. Es muy escalable porque hay múltiples servidores. y, dentro NCache, una vez que avancemos en la presentación y cubra las topologías, entenderás que NCache Tiene copias de seguridad, con la ayuda de replicaciones. Y los datos de la sesión son datos del usuario, ¿verdad? Entonces, son datos que no querrías perder en ninguna situación porque una vez que los pierdes, hay un impacto en el usuario, es un impacto en el negocio. Entonces, con la replicación, también se realiza una copia de seguridad de los datos.

    Usos comunes
    Usos comunes de la caché distribuida

    Entonces, si tengo que enumerar los beneficios que obtienes, y sabes, en primer lugar, mejorarás el rendimiento de tu aplicación gracias al acceso en memoria. Tiene varios servidores que admiten sus aplicaciones para el almacenamiento en caché de sesiones, por lo que es muy escalable. Además, tiene funciones integradas de alta disponibilidad y confiabilidad de datos. Por lo tanto, no hay pérdida de datos de la sesión ni tiempo de inactividad de la aplicación en caso de que se produzca algún problema. NCache el servidor se cae. Y ya no tienes que usar el equilibrio de carga de sesiones fijas porque NCache es una entidad compartida. La solicitud puede ir a cualquiera de los servidores web; siempre podrá encontrar datos de NCache basado en nuestro protocolo. Entonces, todo esto sin ningún cambio de código.

    Otro caso de uso aquí también puede agrupar su estado de vista si está utilizando formularios web ASP.NET. Ahí es donde también se almacenará en caché el estado de vista. El estado de visualización se vuelve pesado; consume mucho ancho de banda. Se convierte en parte de sus paquetes de solicitud y respuesta, y siempre se envía de vuelta al navegador. Y realmente nunca se usa allí, pero es algo que se almacena en el navegador, en el lado del cliente. Y cuando vuelves a publicar, ahí es donde el estado de la vista vuelve al lado del servidor. Entonces, con NCache, le permitimos almacenar en caché el estado de vista en el lado del servidor, para que su carga útil ya no tenga un estado de vista pesado adjunto. Eso mejora el rendimiento. Aunque, ya sabes, el estado de visualización es algo que siempre se almacena en el extremo del navegador. Pero si lo mantiene en el lado del servidor, donde es necesario, sabrá mejorar el comportamiento general de la aplicación. Ya no consumirá su ancho de banda porque el paquete de solicitud y respuesta real ya no tiene un estado de vista pesado adjunto. Y también vamos a ser muy seguros porque el estado de la vista se almacena en el lado del servidor, y luego se puede configurar algún cifrado y algunas características de seguridad además. Y esta también es una opción sin cambio de código. Pero sólo se aplica a formularios web heredados. Por lo tanto, le recomendaría que, si tiene una aplicación de formularios web ASP.NET, también considere un estado de vista de almacenamiento en caché.

    Y luego tenemos ASP.NET y ASP..NET core almacenamiento en caché de respuesta. Por lo tanto, en el caso de páginas estáticas o partes de páginas dentro de una página que sean estáticas, debería considerar almacenar en caché los resultados de esas páginas. y en asp.NET core, tenemos una opción de almacenamiento en caché de respuestas que puede elegir, y esta también es una opción sin cambio de código. Además de esto, también tenemos ASP.NET y ASP..NET Core SignalR Backplane. Porque en un formulario web, si está utilizando SignalR, necesita un backplane como imprescindible. Y los backplanes típicos, como un sistema de archivos o una base de datos, que pueden tener todos esos desafíos de escalabilidad y rendimiento que acabamos de comentar. Con NCache, será súper rápido y muy escalable y confiable, porque estamos usando un sistema de mensajería muy confiable detrás de escena. Estos son algunos de los casos de uso que puede aprovechar en ASP.NET o ASP..NET Core aplicaciones.

  • Antes de continuar, Zack; Creo que hay una pregunta publicada. Sí. Entonces, la pregunta surgió básicamente diciendo y DB por defecto. Entonces, en medio de tu... quería esperar hasta que lo terminaras, pero la pregunta básicamente es formulada. Y por si acaso, ¿podría dar más detalles sobre la pregunta, señor?

    Hola Ron, es NCache ¿También es adecuado para fines de publicación de datos, con el requisito de guardar datos en memoria caché con opciones para sincronizar datos en la base de datos como proceso en segundo plano? Y puede NCache ¿Cuidar ese mecanismo de sincronización entre la memoria caché y las bases de datos de forma predeterminada?

    Sí, esa es una muy buena pregunta. Para casos avanzados, esto es algo que siempre podría ser un requisito. Funciona de dos maneras. Una es que su aplicación ahora utiliza datos que provienen de NCache, pero los datos existen en la base de datos. Por lo tanto, estas son dos fuentes diferentes que deben estar sincronizadas tanto para la lectura como para la escritura. Ahora bien, si la aplicación que está conectada a NCache y la base de datos es la única aplicación que es responsable de cambiar los datos dentro NCache y base de datos, ahora le recomendamos que utilice lectura y escritura. Y sí, esto se puede hacer de forma asíncrona o sincronizada, según sus requisitos. Entonces, lo que realmente sucederá es que cada vez que intentes obtener algunos datos de NCache y no existe en el caché y desea que se almacene en caché, automáticamente llamaría a la lectura directa, y eso se leerá desde la base de datos backend según su código. Y de manera similar, si los datos provienen de una base de datos y, nuevamente, esos datos deben actualizarse en la base de datos, tan pronto como actualice los datos en el caché, en ese caso, utilizará la escritura simultánea. Ahora la escritura directa también puede ser escritura retrasada, lo que significa que los datos deben actualizarse internamente. NCache y en la base de datos utilizando su controlador de escritura directa. Y si desea una invocación asíncrona de eso, en ese caso puede usar la escritura retrasada, para que se pueda hacer en segundo plano. Pero otra vez, NCache y su aplicación es responsable de eso, donde NCache está llamando a su código y su aplicación lo está invocando.

    Otra situación podría ser que haya otras aplicaciones que puedan estar cambiando datos en la base de datos directamente y su aplicación no lo sepa. Entonces, en ese caso, lo que realmente sucederá es que necesitarás utilizar nuestras funciones de sincronización de bases de datos. Deberías crear una dependencia personalizada; Ya sabes, SQL Server tiene notificaciones en cadena. Tenemos dependencias de bases de datos. Por lo tanto, hay muchas funciones de sincronización en las que cualquier cambio en la base de datos es capturado por NCache automáticamente. Y puede volver a utilizar la lectura directa y recargar datos en el interior. NCache también. Entonces, para resumir, NCache puede, ya sabes, manejar ambas situaciones: donde es tu aplicación la única entidad que cambia algo dentro NCache y la base de datos, o en una situación en la que la base de datos se puede cambiar fuera del alcance de la aplicación que utiliza el almacenamiento en caché.

    Entonces, ambos escenarios están cubiertos y NCache le dará una opción de sincronización 100 que conoce para estos casos. Si estás hablando de memoria caché, normalmente ASP.NET también incluye memoria caché, ¿verdad? Pero si te refieres NCache como memoria caché, así que ya respondí la pregunta. Entonces, avíseme si hay más preguntas y podemos continuar desde allí.

  • Mensajería de publicación/suscripción

    Suena bien. Creo que podemos seguir adelante. Seguro. Muy bien, a continuación cubriré la mensajería Pub-Sub. Como se puede ver, NCache Ya se comparte entre aplicaciones, ¿verdad? Entonces es una entidad que puede utilizar para sus requisitos de datos. Puedes agregarle datos; puedes recuperar datos de él. Puede obtener beneficios de rendimiento y escalabilidad de NCache. Puede ampliar este caso de uso utilizando NCache También como plataforma de mensajería. Entonces, NCache La mensajería es muy poderosa dentro NCache. Es un mecanismo asíncrono impulsado por eventos en el que varias aplicaciones pueden impulsar los requisitos de mensajería o los requisitos de coordinación de aplicaciones entre sí. Si necesita varias aplicaciones para comunicarse entre sí, establecer la comunicación es un desafío. Entonces, tendrías que confiar en algo que sea una entidad centralizada, NCache es esa entidad. Y con su soporte de mensajería, puede brindarle esa opción donde una aplicación puede agregar datos o mensajes a NCache, y esos mensajes se pueden propagar a todos los suscriptores del otro extremo: las otras aplicaciones que necesitan, ya sabes, esos mensajes.

    Usos comunes
    Usos comunes de la caché distribuida

    Del mismo modo, estos también podrían ser mensajes basados ​​en datos. Por ejemplo, cualquier dato que se agregue, actualice o elimine, recibirá una notificación al respecto. Estos podrían ser algunos mensajes de aplicaciones personalizados o mensajes basados ​​en datos, de modo que cubra ambas áreas donde se completan los datos en su interior. NCache y desea que otras aplicaciones lo sepan, puede gestionar los requisitos de mensajería a través de eso. O podría ser mensajería personalizada o mensajería basada en aplicaciones donde una aplicación necesita comunicarse con otra aplicación. Nuevamente se basa en un modelo escalable en memoria. También tiene opciones de replicación confiables disponibles. Se basa en una plataforma de mensajería Pub-Sub convencional donde tenemos un concepto de tema y tenemos un concepto de intermediario de mensajes, donde se conectan múltiples aplicaciones. Por lo tanto, puede tener definidas aplicaciones de editor y suscriptor. Las aplicaciones de editor publican ya sabes, mensajes a NCache que luego se transmiten a todos estos suscriptores. Y luego, los suscriptores también pueden enviar sus propios mensajes. NCache actúa como una plataforma de comunicación entre estas diferentes aplicaciones.

  • Búsqueda de texto completo (Lucene distribuido)

    Finalmente, tenemos otro caso de uso, que es la búsqueda de texto completo. Por lo tanto, si tiene una aplicación y necesita cumplir con los requisitos de búsqueda de texto completo desde NCache, puede considerar utilizar nuestras funciones de búsqueda de texto completo basadas en Lucine.NET.

    Normalmente, la API de Lucene es independiente. Bien, entre ustedes, pueden extenderlo en múltiples servidores. NCache También le brinda la posibilidad de cargar índices dentro de la memoria. Entonces, NCache Utilizaría índices basados ​​en disco, pero le permite ampliar la capacidad de almacenamiento y manejo de solicitudes al tener varios servidores. Entonces, aunque está basado en disco, seguirá siendo mejor que una única fuente en la base de datos. Porque, en los casos en los que tenga mucha carga transaccional, cada servidor será responsable de su propio conjunto de solicitudes de índices. Entonces será muy escalable; También será muy confiable. Debido a que se trata de un almacenamiento asistido, cuando se trata de índices de escena, la persistencia en sí es una característica con una NCache. Cualquier dato que almacene dentro NCache También se puede conservar en el disco o, según algunos proveedores de bases de datos, también se puede conservar en algunas bases de datos. Pero Lucene es la única característica donde NCache utiliza disco en comparación con RAM, porque la naturaleza del caso de uso es tal que requiere que los datos sean persistentes.

    Usos comunes
    Usos comunes de la caché distribuida

Espero que haya sido sencillo. Estos fueron algunos de los casos de uso. Nuevamente, dentro de estos casos de uso, tenemos muchas características; cualquier tipo de aplicación, cualquier requisito específico dentro de una aplicación, se puede manejar completamente utilizando nuestras funciones de almacenamiento en caché de objetos y de sesión.

Sólo una pregunta rápida, Ron.
¿Hay alguna manera de acceder a mis datos en el caché como lo hago en mi base de datos MySQL? Quiero poder ejecutar consultas SQL en mis datos de caché. ¿Puedo hacer eso?

Por supuesto. NCache En primer lugar, admite búsqueda SQL y consultas LINQ. Entonces, si tiene la capacidad de escribir una aplicación que simplemente pueda conectarse a NCachey luego ejecutar búsquedas basadas en criterios, por lo que esa es la opción fácil que puede utilizar, donde escribe una búsqueda basada en criterios. Por ejemplo, puede seleccionar todos los productos donde precio del producto es mayor que 10 y menor que 100. O puede buscar todos los productos según una categoría; Puede encontrar clientes según una región. Por lo tanto, puede realizar búsquedas basadas en SQL o búsquedas basadas en LINQ, y NCache le daría los datos del caché. Entonces esa es una opción.

La otra opción es que tengamos una integración de LINQ Pad. Entonces, si solo desea visualizar datos sin tener que pasar por el desarrollo de una aplicación, LINQ Pad es una salida fácil donde puede ejecutar consultas LINQ y luego puede visualizar datos ejecutando consultas LINQ.

Y luego, en nuestro próximo lanzamiento, la tercera opción es que brindaremos una herramienta de análisis de datos. Por lo tanto, le brindaremos una forma automatizada, una herramienta de monitoreo, que le brindará la capacidad de monitorear los datos que existen en el caché. Y le brindará esas opciones de búsqueda basadas en criterios desde una GUI, así que eso es algo que está en proceso; Se han completado los requisitos, se ha completado el trabajo de desarrollo. Creo que será parte de nuestro próximo lanzamiento.

Definitivamente espero con ansias todo eso. Perfecto. Sí. Muy bien. Creo que estamos bien por ahora, Ron. También guardaré un par de estas preguntas para el final porque tenemos algunas interesantes, pero sí, sigamos adelante. Seguro.

Clúster dinámico de recuperación automática

Entonces, a continuación cubriré el clúster de caché dinámico, ya sabes, todos los detalles al respecto. NCache Se basa en el protocolo de agrupación de caché basado en TCP IP. Es nuestra propia agrupación de caché implementada. No utilizamos ningún tercero ni agrupación de Windows para este asunto. Es un protocolo 100% propietario. Está escrito en .NET y .NET Core, entonces, ya sabes, es muy conveniente en términos de: los sockets TCP también son .NET y .NET Core basado. Es una arquitectura 100% peer-to-peer, por lo que no existe un único punto de falla. Puede agregar o eliminar servidores en tiempo de ejecución. No es necesario detener el caché ni las aplicaciones cliente que están conectadas a él. Entonces, dinámicamente puede realizar cambios en un clúster de caché en ejecución y, NCache No te daré ningún problema por eso. A medida que agrega un servidor, los clientes reciben una notificación en tiempo de ejecución, por lo que automáticamente saben que este servidor ya no existe, ya sabe, ahora es parte del clúster de caché, por lo que comienzan a usar el servidor adicional, el clúster se ajusta automáticamente. De manera similar, una vez que eliminas un servidor, otros servidores detectan que ese servidor ha desaparecido para siempre. Notifican a los clientes y los clientes dejan de usar el servidor perdido. Hay un soporte de conmutación por error de conexión, que también está integrado en el extremo del cliente, por lo que cualquier servidor que caiga se asegurará de que, ya sabes, el clúster se asegurará de que los clientes lo sepan, conmutarán la conexión por error y comenzarán a usar la conexión superviviente. servidores.

Clúster de caché dinámica
Clúster de caché dinámica

Entonces, en cualquier caso, cualquier cambio en el clúster se propaga a los clientes. Los clientes son inteligentes, siempre están al tanto del estado del clúster de caché. Por lo tanto, esto garantiza que no haya tiempo de inactividad ni pérdida de datos, porque también tenemos soporte de replicación integrado. Entonces, NCache tiene alta disponibilidad y, además, es muy confiable con la ayuda de la replicación. Garantiza un 100% de tiempo de actividad en el extremo de la aplicación, sin ninguna interrupción de la aplicación, puede continuar usándola NCache.

Topologías de almacenamiento en caché

A continuación, hablaré sobre las topologías de almacenamiento en caché. Esa es la parte principal que quería cubrir. Tenemos cuatro opciones para elegir. La primera opción es nuevamente para configuraciones más pequeñas. Estos dictan cómo configurarías un caché.

Caché reflejada

Entonces, tenemos la opción de configurar un caché usando una topología de caché reflejada, y la forma en que funciona es que solo tienes dos servidores como máximo. Uno de esos servidores actuaría como un servidor activo, donde se conectarán todos los clientes. El otro servidor actuaría como un servidor pasivo, que actúa como respaldo, y el respaldo lo realiza NCache. Esta topología, una vez que la configuras, sigue automáticamente la arquitectura. No tienes que definir, básicamente, que esto se vuelve activo o esto se vuelve pasivo, se hace mediante NCache automáticamente. Pero, una vez que hagas eso, lo que realmente sucederá es que todas las aplicaciones cliente se conectarán al servidor activo y desde allí leerán y escribirán datos. Cualquier información que tengamos en el servidor activo será respaldada en el servidor pasivo a través de una opción de duplicación asíncrona. Por lo tanto, el cliente actualiza el activo y devuelve, por lo que el costo de replicación no incurre en el extremo de la aplicación del cliente. La solicitud del cliente será súper rápida. Entre bastidores, NCache debería actualizar la copia de seguridad. Y la copia de seguridad está ahí por una razón importante: si el servidor uno alguna vez deja de funcionar, el servidor de copia de seguridad se actualiza automáticamente como un servidor activo y los clientes conmutan por error sus conexiones y comienzan a usar el servidor recién activo que anteriormente tenía copia de seguridad. Y ahora el primer servidor regresa, se unirá nuevamente como un nodo de respaldo, no como un nodo activo, porque ya tenemos un activo en el clúster de caché. Y todo esto se hace sin problemas en sus aplicaciones. No es necesario realizar ninguna intervención cuando se agrega un servidor o se pierde.

Caché reflejada
Caché reflejada

Esta topología es muy buena tanto para lectura como para escritura. Bueno como referencia, bueno para datos transaccionales, pero tiene un problema de capacidad porque solo tienes dos servidores al máximo y, de esos dos servidores, solo uno está activo en un momento dado. Entonces, para configuraciones más pequeñas, con datos confiables, ya sabes, el almacenamiento en caché, esta podría ser una de las opciones.

Caché replicado

Continuando, la segunda opción es un caché replicado. Esto es nuevamente para configuraciones más pequeñas. Esto funciona de tal manera que todos los servidores estén activos, como puede ver el servidor 1 y el servidor 2, ambos están activos. Los clientes se dividen entre diferentes servidores, por lo tanto, si tiene seis clientes como se muestra en el diagrama, algunos de ellos se conectarían al servidor uno y otros se conectarían al servidor 2. Bien, estos tres están conectados al servidor uno y estos están conectados a servidor 2.

Caché replicado
Caché replicado

Esto se hace automáticamente; El equilibrio de la conexión es algo que se construye en el interior. NCache. Todos los servidores están activos pero cada servidor tiene una copia del caché. Entonces, cualquier dato que tenga en el servidor 1, hay una copia en el servidor 2, y esta copia se mantiene con la ayuda de actualizaciones de sincronización. Entonces, cualesquiera que sean las actualizaciones que realice en un servidor, esas actualizaciones deben aplicarse en otros servidores en una llamada de sincronización y, con esto lo que queremos decir es que el cliente esperará hasta que se complete toda la operación. Si la operación falla en algún servidor, se revierte toda la operación. Y así logramos una copia 100% sincronizada en todos los servidores. Ahora bien, esto es muy bueno en términos de confiabilidad, pero también si tiene un caso de uso de lectura intensiva, porque tiene más copias de datos o más copias de diferentes servidores, entonces, a medida que tenga más servidores, su capacidad de lectura aumentará. porque tiene más servidores para atender solicitudes. Pero, como acaba de notar, tenemos una actualización de sincronización, por lo que cualquier operación de escritura debe aplicarse en todos los servidores. Por lo tanto, es bueno para configuraciones más pequeñas en cuanto a capacidad de escritura. Si tiene tres o cuatro servidores, debe aplicar la misma operación tres o cuatro veces, lo que puede afectar negativamente el aumento del rendimiento. Por lo tanto, esta topología se recomienda más para escenarios de datos de referencia, para configuraciones más pequeñas. Es escalable para lecturas, no muy escalable para escrituras, pero es muy confiable. Ofrece alta disponibilidad y confiabilidad de los datos porque, si pierde algún servidor, por ejemplo, se pierde el servidor 1, no hay pérdida de datos ni tiempo de inactividad porque estas aplicaciones conmutarán por error y comenzarán a elegir el servidor sobreviviente y tendrán una copia del caché. ya disponible.

Caché particionado y caché de réplica de partición

La siguiente opción es que puedes elegir, ya sabes, puedes configurar un caché usando un caché particionado. Ahora la partición y la réplica de partición son las topologías más populares. La caché particionada le permite distribuir datos entre los nodos de servidor disponibles. Por ejemplo, si tiene dos servidores y tiene algunos datos, la mitad de los datos irían al servidor 1 y la mitad de los datos irían al servidor 2. La distribución de datos también forma parte de NCache. No es algo que hagan sus aplicaciones, las aplicaciones lo hacen automáticamente en tiempo de ejecución. Hay un mapa de distribución inteligente y un algoritmo hash, que dicta qué datos irán a qué servidor.

Topologías de almacenamiento en caché: caché con particiones
Topologías de almacenamiento en caché: caché con particiones

Entonces, en base a eso, sus aplicaciones son las que distribuirán los datos de manera uniforme entre todos los servidores en el clúster de caché. Ahora los datos se distribuyen uniformemente, por lo que la carga de solicitudes también se distribuirá uniformemente. Entonces, esto le brindará más capacidad de lectura y escritura según la cantidad de servidores. Si tiene dos servidores, tiene dos servidores trabajando en equipo. Y, si pasa de dos a tres, tendrá más servidores manejando sus solicitudes de lectura y escritura. Por lo tanto, obtiene más escalabilidad para lecturas y escrituras. Entonces, de manera linealmente escalable, obtienes más escalabilidad si agregas más servidores. Al agregar más servidores, también está agrupando los recursos de memoria, debido a que los datos se distribuyen, por lo que está agrupando el almacenamiento de todos los servidores. Entonces, si tiene dos servidores, tiene una capacidad de dos servidores. Si agrega un tercer o cuarto servidor, aumenta su capacidad con esa cantidad de servidores. Por lo tanto, la capacidad general se agrupa, por lo que se obtiene un crecimiento lineal a medida que se agregan más servidores en el clúster de caché.

Muy bueno para lecturas, muy bueno para escrituras, muy escalable tanto para referencia como para datos transaccionales. El único inconveniente de esta topología es que no tiene ninguna copia de seguridad. Si pierdes un servidor, pierdes esa partición. Entonces, cuando eso sucede, debes tener una manera de construir esos datos a partir de una base de datos backend. Por lo tanto, si su objetivo principal es lograr un alto rendimiento, si es una aplicación centrada en el rendimiento y puede permitirse el lujo de volver a una base de datos, lo cual suele ser el caso, no dependerá de NCache Para obtener alta disponibilidad y confiabilidad de los datos, esto le brindará el mejor rendimiento en comparación con todas las demás topologías.

Pero si necesita alta disponibilidad, y ya sabe, los requisitos de confiabilidad de los datos también deben ser atendidos desde NCacheTengo una topología mejor, que se llama partición de caché de réplica. Ahora, la arquitectura general es exactamente igual a la partición con una mejora de réplicas, donde cada servidor tiene una partición de datos, pero cada servidor mantiene dos particiones; una partición de datos activa, donde se conectan los clientes y, una partición de respaldo de otro servidor. El servidor 1 está activo, su copia de seguridad está en 2, el servidor 2 está activo y su copia de seguridad está en 1. Y tiene la posibilidad de elegir opciones de copia de seguridad sincronizada o asíncrona. Si elige la partición de réplica con asíncrono, el cliente actualizará la partición activa y devolverá las operaciones completadas en el cliente y luego, NCache actualizará la partición de respaldo detrás de escena. Si elige la sincronización, la aplicación cliente actualizará el activo y la copia de seguridad como una operación transaccional. De cualquier manera, la sincronización es obviamente más confiable, la asíncrona es más rápida. Pero de cualquier manera, NCache es capaz de manejar la confiabilidad de los datos de tal manera que si algún servidor falla, la topología de respaldo se activa y no se produce ninguna pérdida de datos ni tiempo de inactividad de la aplicación. Bien.

Topologías de almacenamiento en caché - Caché de partición-réplica
Topologías de almacenamiento en caché - Caché de partición-réplica

Entonces, permítanme mostrarles rápidamente esta topología con 3 servidores. Entonces, obtenemos todos los beneficios de alto rendimiento para lecturas, alto rendimiento para escrituras, ya sabes, escalabilidad lineal tanto para lecturas como para escrituras. Además de eso, obtenemos beneficios de escalabilidad, alta disponibilidad y confiabilidad de datos. Si algún servidor falla, no habrá pérdida de datos ni tiempo de inactividad de la aplicación.

Equilibrio de datos al agregar un servidor
Equilibrio de datos al agregar un servidor

De demostración

Espero que quede claro. Permítame llevarlo a nuestro entorno de demostración ahora y permítame mostrarle rápidamente cómo puede construir estas topologías de almacenamiento en caché y luego también le mostraré cómo probar rápidamente un clúster de caché. Pero, mientras tanto, avíseme si tiene alguna pregunta. Bueno, solo un recordatorio rápido de que todo lo que estamos mostrando también lo podemos hacer con usted con sesiones de acompañamiento y sesiones de soporte técnico en sus entornos, para sus casos de uso específicos. Entonces, todo lo que discutimos aquí, incluso después del seminario web, estaremos encantados como equipo de poder reunirnos con usted también para poder demostrarle cómo funcionaría para usted.

En lo que respecta a las preguntas, tengo una que llegó justo al final. Uno de ellos es uno de tus favoritos.
Ha habido mucha discusión sobre el uso de Hazelcast para el almacenamiento en caché de aplicaciones. Que hace NCache siempre que Hazelcast no lo haga?

Bueno. En primer lugar, es más un debate. NCache en realidad está escrito en .NET y .NET Core, plataforma preferida para NCache es Windows. Lo bueno de NCache es que se ejecuta en .NET, así como, ya sabes, en Windows y también en Linux. Entonces, la plataforma y el soporte de compatibilidad que NCache ofrece, no existe ningún otro producto que pueda lograrlo. Entonces, esa es la primera parte, donde es la opción más preferida si, ya sabes, consideras la plataforma que planeas usar. La otra diferencia es que animaría a todos a que busquen, ya saben, nuestra páginas de comparación, allí también encontrarás muy buen material. Pero, para resumir rápidamente esto, NCache El soporte de almacenamiento en caché de objetos tiene muchas características de las que otros productos carecen por completo. Por ejemplo, para la búsqueda SQL, tenemos un elaborado conjunto de funciones disponibles dentro NCache. Tenemos cargador de caché y actualizador de caché. Esas son características que son completamente exclusivas de NCache. Nuestro controlador de lectura y escritura con capacidad para ejecutar .NET y .NET Core código en el lado del servidor, eso es algo que es una característica absolutamente única para NCacheY la lista continúa, ¿verdad? Entonces, algunas de las características que, ya sabes, puedes personalizar en el lado del servidor. Esos solo están disponibles en NCache Y luego, desde el punto de vista de la aplicación, hay muchas características que faltan en otros productos. Por lo tanto, animo a todos a que consulten nuestra página de comparaciones. Hay algunas comparaciones, características publicadas, que le brindarán información más detallada al respecto.

Esta es definitivamente nuestra línea de preguntas favorita, ya sea un seminario web o incluso una solución tecnológica, podría ser Hazlecast, podría ser Scala, podría ser Redis, pero muchas gracias, Ron. Sí, creo que estamos listos para comenzar. Por favor continua. Seguro.

Crear nueva caché agrupada

Entonces, permítanme ofrecerles una demostración rápida del producto mediante la creación de una nueva caché agrupada. Llamémoslo caché de prueba. Bien, déjame moverme un poco aquí, solo ten paciencia. Bueno.

Equilibrio de datos al agregar un servidor
Crear una nueva caché agrupada

Entonces, acabamos de explicar cuatro topologías de almacenamiento en caché. Voy a optar por la partición de caché de réplica, porque es la más recomendada con opción de replicación asíncrona. Mantendré todos estos valores predeterminados.

Equilibrio de datos al agregar un servidor
Seleccionar una topología de almacenamiento en caché

Continúe y le mostraré lo fácil que es configurar un caché usando herramientas GUI. Este es nuestro administrador web, pero también puede lograr todo utilizando nuestros cmdlets de PowerShell y también puede automatizar esta implementación, si es necesario. Agregaré el servidor uno, donde NCache esta instalado. Luego agregaré el servidor 2. Entonces, mis 2 cajas con NCache con un tamaño de 2 gigas va a ser, ya sabes, configurado. Entonces, mi idea aquí es crear un clúster de caché de 2 nodos usando 2 gigas de tamaño de caché en cada uno. Entonces, un total de cuatro conciertos con 2 servidores donde NCache ya está instalado. Y luego, usaré mi caja para conectarme a este clúster de caché.

Equilibrio de datos al agregar un servidor
Particiones y tamaño de caché

Parámetros TCP. este es el puerto que necesitas configurar, una vez que lo hagas. Manténgalo predeterminado o especifique cualquier puerto donde el firewall no afecte ese puerto.

Equilibrio de datos al agregar un servidor
Parámetros TCP más desordenados

Si necesita configurar el cifrado y la compresión, esta es la pantalla. Lo dejaré como está. Elige siguiente. Los desalojos, si tu caché se llena, es algo que puedes elegir. Una opción es que su caché simplemente no admita ninguna operación de escritura. Le dará un error, "la caché está llena". Otra opción es configurar el desalojo y, según estos algoritmos, eliminará algunos de los elementos del caché en tiempo de ejecución. Entonces, según la prioridad, el uso, los elementos usados ​​menos recientemente o con más frecuencia se pueden eliminar, y el cinco por ciento de los elementos se eliminarán del caché. Iniciaré este caché al finalizar y al iniciar automáticamente, para que cada vez que mi servidor se reinicie o NCache El servidor se reinicia y puede reiniciar los cachés que están detenidos.

Habilitar desalojo
Habilitar desalojo

Elijo terminar y listo. Así de fácil es configurar un clúster de caché. Y en un momento, me mostrará otra vista, donde se iniciará este caché, y luego les mostraré algunos detalles de monitoreo y administración desde allí. Tenemos algunos videos más detallados disponibles sobre configuraciones de caché, así que si hay alguna pregunta, hágamelo saber ahora, o podemos confiar en esos videos también.

Puedo seleccionar y elegir el grupo de monitores, y eso abrirá otro panel, que me permitirá monitorear completamente mi caché. Me muestra un clúster de caché completamente conectado, contadores de rendimiento de solicitudes, contadores de latencia y luego también están allí las adiciones, recuperaciones y contadores de actualizaciones. De manera similar, me muestra el uso de CPU y memoria y situaciones de caché lleno.

Habilitar desalojo
NCache Monitorear

También tengo paneles para el cliente, así como una vista de informe, donde vemos paneles del lado del servidor y del lado del cliente. Por el momento no hay ninguna aplicación conectada a él, pero hay una manera de simular cierta carga usando este botón de prueba de estrés. Entonces, puedo iniciar una carga ficticia o alguna actividad en mi clúster de caché llamando a esta prueba de estrés. Tan pronto como haga eso, verá que un cliente está conectado y esta topología requiere que mis datos se distribuyan, ¿verdad? Entonces, algunos datos irían al servidor 1 y otros al 2. Entonces, este cliente usa ambos servidores de manera uniforme. Como puede ver, las solicitudes llegan a ambos servidores y el tamaño de la caché está aumentando en ambos servidores.

Habilitar desalojo
Prueba de estrés

Tenemos particiones activas y de respaldo que también se muestran en ambos servidores. Y si les muestro rápidamente los contadores de latencia, es una latencia inferior a milisegundos, incluso una latencia de microsegundos, en lo que respecta a mis operaciones. Y puedo ver el panel del cliente que muestra estas estadísticas del lado del cliente y, de manera similar, tenemos un informe que muestra las estadísticas del lado del servidor.

Ron, tengo una pregunta. En realidad, recibimos un par de preguntas, así que una de ellas es:
¿Cuál es su recomendación para el desalojo? Y, si al menos el desalojo, espere hasta el siguiente, si el desalojo está desactivado, ¿podemos aumentar el tamaño de la caché o disminuirlo?

Seguro. Entonces, ya sabes, el desalojo es algo que debe configurarse según su caso de uso, ¿verdad? Si los datos son algo que usted puede permitirse el lujo de ser desalojado, correcto. El desalojo en sí eliminará algunos datos si su caché se llena. La situación ideal es que nunca tengas que hacer eso y que tu caché esté dentro de su capacidad, ¿verdad? Por lo tanto, le da suficiente tamaño o suficiente memoria a su caché para que nunca se llene. Pero, en los casos en los que sí lo hace, llega un punto en el que se llena. En ese caso, si sus datos son algo que siempre puede reconstruir a partir de una base de datos backend, se recomienda activar los desalojos. Por ejemplo, para sesiones de ASP.NET, no recomendamos activar los desalojos, porque estaría eliminando algunos usuarios para dejar espacio para los nuevos usuarios, y todos los usuarios tienen sus datos importantes, ¿verdad? Por lo tanto, son datos que no querrás perder en ningún escenario determinado. Entonces, para esos escenarios, le recomendamos que aumente el tamaño de su caché. Planifique el tamaño de su almacenamiento en caché de tal manera que sea lo suficientemente grande y en los casos en que se llene NCache le permite cambiar el tamaño de la caché en tiempo de ejecución. Puede editar esto, cierto, y en base a eso puede aumentar y luego guardar estas configuraciones en un caché en ejecución. Por lo tanto, es aplicable en caliente y aumentará el tamaño de la caché en tiempo de ejecución.

Cambiar el tamaño de la caché en tiempo de ejecución en NCahe
Cambiar el tamaño de la caché en tiempo de ejecución en NCache.

¿Alguna otra pregunta? Parece que eso respondió, y guardaré un par de ellos para el final, para que puedas completar tu demostración. Seguro. Entonces, volviendo a mi entorno de demostración, puede agregar clientes, por ejemplo, puedo agregar mi cuadro como cliente y esta es una descripción general rápida de una aplicación de muestra que puedo ejecutar desde mi cuadro. Por ejemplo, esto también está disponible en GitHub, por lo que si busca NCache en GitHub verías algunas muestras, y extraje una de ellas de allí. Entonces, lo que realmente necesita hacer dentro de su aplicación es incluir este paquete NuGet que es Alachisoft.NCache.SDK, y si estás interesado en almacenamiento en caché de datos de la aplicación, esta es la muestra que debes considerar. Y, en base a eso, una vez agregado esto, puedes incluir algunos recursos dentro de la aplicación.

Aplicación de muestra NCahe
Aplicación de muestra NCahe: operaciones básicas

Esto ya incluirá algunas, ya sabes, bibliotecas de NCache, como parte de este nuevo paquete NuGet. Y luego incluyes esta referencia usando Alachisoft.NCache.Cliente. También agregue Tiempo de ejecución.Almacenamiento en caché, correcto, y en base a eso puedes definir un identificador de caché y, dentro de esto, tenemos varios métodos. Por ejemplo, déjame mostrarte cómo inicializar el caché. De hecho, entremos en esto. Tengan paciencia conmigo. Estoy pasando por un momento difícil. De todos modos, por alguna razón, no puedo entrar, creo que hay un problema con la caja en sí. Pero de todos modos, las API son bastante intuitivas. Déjame mostrártelo desde nuestro PowerPoint. Esta muestra en realidad usa eso, no puedo demostrarlo porque no puedo ingresar al código. No me deja.

Entonces, este es un identificador de caché y este es el fragmento de código que quería mostrar, que el CacheManager.GetCache le permitirá conectarse al caché. Entonces puedes llamar caché.Obtener para obtener datos del caché. Del mismo modo, puedes llamar caché.Agregar or caché.AddAsync para agregar cualquier registro en el caché y de manera similar insertar como en upsert donde agrega, así como también actualiza datos en el caché y de manera similar, puede llamar caché.Remove.

Descripción general del almacenamiento en caché de datos de la aplicación (API)
Descripción general del almacenamiento en caché de datos de la aplicación (API)

Así que esto muestra está disponible y puede descargarlo y ejecutarlo en su caché. Todo lo que tienes que hacer es apuntar al caché desde el final de la aplicación. Hay un montón de configuraciones. Puede especificar el nombre de la caché y la IP en línea, o puede confiar en client.ncconf, que este paquete NuGet incluye en el proyecto. Entonces, si les muestro rápidamente algunos recursos, verán, en realidad se agregan muchos archivos, y este archivo de aquí es un archivo que les permite conectarse al caché. Entonces, ya puede conectarse a mi 'democache'. Si lo ejecuto, realizará alguna actividad en mi caché e iniciará las operaciones de almacenamiento en caché.

De manera similar, tengo otra muestra que brindará, ya sabes, algunas opciones más, por ejemplo, había una pregunta sobre buscando dentro NCache, bien. Por lo tanto, le recomendaría que utilice este ejemplo aquí. Esto es para búsqueda SQL. Se descarga nuevamente de GitHub y nuevamente usa la búsqueda, tiene datos de muestra y luego llama a la búsqueda usando SQL. Y tiene un montón de características aquí mismo, nuevamente en la misma línea, las muestras son bastante intuitivas. Puede insertar elementos y luego puede consultar utilizando etiquetas de nombre, puede consultar, ya sabe, consultar utilizando índices o proyecciones definidos.

Aplicación de muestra NCahe
Aplicación de muestra NCahe: búsqueda SQL

Desafortunadamente no puedo profundizar en estos métodos debido a cuestiones ambientales, pero nuevamente estos servirían como un gran punto de referencia para usar NCache desde cualquier aplicación que necesite usar almacenamiento en caché dentro de la aplicación, o que tenga un caso de uso de búsqueda dentro de la aplicación.

Caché de cliente

Había otra pregunta sobre Caché de cliente, por lo que esta topología también es una opción sin cambio de código. Cualquier dato almacenado en caché desde una base de datos interna NCache, puede almacenarlo en caché utilizando el caché del cliente. Es un caché encima de otro caché. Funciona sin ningún cambio de código. Es un caché sincronizado con un caché agrupado, por lo que no hay problemas de coherencia de los datos. La sincronización se realiza mediante NCache. Cualquier actualización realizada en la caché de un cliente se propaga a la caché agrupada como imprescindible y luego se propaga a otras cachés de clientes, y en la caché se gestiona toda la sincronización. Para escenarios de datos de referencia, donde no hay muchas escrituras, esta es una opción muy recomendada para elegir.

Replicación WAN

De manera similar, los NCache también tiene un replicación de WAN. Contamos con topologías activo-pasivo y activo-activo. Por lo tanto, todos sus datos de caché se pueden replicar de un centro de datos a otro a través de nuestro caché puente. El puente en sí tiene una copia de seguridad en un servidor pasivo activo, por lo que tiene un caché de origen y un caché de destino, replicación unidireccional o migración de datos de este a oeste de un centro de datos a otro para escenarios de recuperación ante desastres o para Migración de este a oeste, ya sabes, o para situaciones en las que necesitas datos de una aplicación y necesitas usarlos en la aplicación de destino. Por lo tanto, podría transferir datos completos de la caché de un centro de datos a otro.

Topología activo-activo
Topología activo-activo

La otra opción es activo-activo. En esto, tenemos ambos sitios activos, por lo que el sitio uno está transfiriendo datos al sitio dos y el sitio dos está transfiriendo datos al sitio uno. Nuevamente es una opción sin cambio de código. Es solo una configuración. Una vez que configura el puente, conecta dos cachés juntos y NCache toma el control y comienza la replicación de datos entre esos cachés.

Y esto también se extiende a la topología multiactivo-activo, por lo que no es necesario tener solo dos sitios, podrían ser tres, cuatro o cinco sitios donde todos los sitios transfieren datos entre sí. Entonces, NCacheLa capacidad de realmente, ya sabes, sincronizar datos de todos los sitios, a la vez. Y, por cierto, esto se hace de forma asincrónica para que el costo de replicación no incurra nuevamente en el extremo de la aplicación o en el extremo del usuario. Se hace en la solicitud. Tiene aplicaciones cliente conectadas aquí y también aquí. No ven ninguna degradación del rendimiento debido a esta replicación WAN. Se hace detrás de escena por NCache. Déjame saber si hay alguna pregunta. Concluyamos la presentación y el conjunto de funciones en este punto. Zack, avísame si tienes alguna pregunta.

Sí, tenemos un par. Y a todos les agradezco su paciencia, así que este también es un buen momento para hacer cualquier otra pregunta si se lo han estado preguntando durante la presentación. Entonces, comencemos con uno.
¿Cómo se confirma si su caché se está ejecutando en buen estado? ¿Recibimos algún tipo de notificación, etc.? ¿Cómo sabemos si hay un problema?

Por supuesto. Tenemos herramientas de seguimiento y gestión. Entonces, una cosa podría ser que inspeccione visualmente y vea el estado del clúster. Verás, el uso de CPU, el uso de RAM. Si conoce su línea de base, cuántas solicitudes están generando sus aplicaciones y cuál es la utilización típica de NCache En base a estos contadores, puede inspeccionar visualmente utilizando nuestros paneles de control y gestión. Y luego, tenemos alertas para cualquier situación, por ejemplo, inicia un caché, detiene un caché, un nodo se une, sale, el tamaño del caché se llena o el clúster entra en un estado no saludable, como, cerebro dividido, tenemos alertas, que iniciamos sesión en los registros de eventos de Windows. Y luego también puedes configurar alertas por correo electrónico desde NCachey también puede generarle un correo electrónico. Entonces, esto es algo que será un monitoreo proactivo, algunas alertas de NCache, Donde NCache alertaría y usted puede tomar acciones basadas en eso. Y luego tenemos datos históricos capturados en forma de registros de contador de rendimiento, así como registros de caché. Para aquellas situaciones en las que no sabía qué salió mal y vio algunos problemas con NCache, podemos venir y participar, y podemos revisar NCache registros y, en ese caso, realizar una evaluación del estado de la caché. Entonces, hay muchas vías que ustedes conocen en este sentido que podemos explorar.

Suena bien. Otra pregunta es:
¿Cuál es la última versión de .NET que NCache ¿Actualmente es compatible con los clientes?

Bueno. Por lo general, tendemos a estar actualizados .NET framework versión, .NET Core. Actualmente se admite .NET 6, que es un requisito previo para NCache. Debe tener .NET 6 como elemento obligatorio NCache servidores. Pero tus aplicaciones pueden estar en cualquiera, ya sabes, .NET framework, creo que del 3.5 en adelante 4.0, 4.5, o incluso 4.7, 4.8. Sus aplicaciones pueden estar en cualquiera de los sistemas .NET o .NET Core estructura. Es sólo una limitación del lado del servidor. Y, tan pronto como se prueba la compatibilidad de un marco más nuevo, por ejemplo, para .NET 7, ya lo estamos probando en nuestro laboratorio de control de calidad. Entonces, una vez que hayamos firmado, también lanzaremos un soporte oficial para eso.

Maravilloso. Otra pregunta es:
¿Cuál consideraría usted que es la cantidad segura de cachés agrupados entre mis servidores de caché? ¿Puedo crear, digamos, 15 cachés agrupados entre mis servidores de caché?

Bueno. En primer lugar, NCache no impone ningún límite sobre la cantidad de cachés que puede configurar. De hecho, si miras mi entorno de demostración, tengo dos cachés configurados. Entonces, puedes crear tantos como necesites. Sin embargo, existe una recomendación técnica o una recomendación relacionada con la capacidad que normalmente recomendamos en un entorno de producción no ir más allá de cuatro o cinco cachés. Porque cada caché es un clúster de caché independiente. En realidad, consumirá todos los recursos para el almacenamiento, la agrupación en clústeres y la comunicación; también hay una sobrecarga de administración del clúster. Entonces, a medida que aumenta el número de cachés, en realidad estás introduciendo ese problema de capacidad en ese entorno o dentro de ese entorno. Por lo tanto, recomendamos mantenerlo, ya sabes, entre cuatro y cinco, si es posible. En una situación en la que tengas que tener varios cachés, puedes ampliarlos hasta 10. Pero, como dije, nuevamente es una recomendación. No existe un límite real que imponga esto. Es una recomendación de uso general de nuestra parte.

Bueno. Permítanme agregar uno más ya que sé que estamos al final de la sesión y sé que la gente tiene otras cosas en la ventana acoplable.
Poder NCache ¿Proporcionar replicación de DR?

Sí, lo hace. La característica de replicación WAN que acabo de comentar, la última topología, que cubre la DR, la recuperación ante desastres. Los sitios se pueden transmitir con los datos del sitio activo, por lo que tendrá una copia de seguridad completa del sitio de recuperación ante desastres. Sólo tienes que hacer el cambio al final de la aplicación. Dado que todos los datos ya están respaldados, no hay pérdida de datos en esa situación en la que un centro de datos deja de funcionar por completo o usted necesita desactivarlo para realizar tareas de mantenimiento.

Está bien. Creo que prácticamente logramos atrapar a tantos como pudimos. Damas y caballeros, sepan que también estamos disponibles fuera de estas sesiones. Estamos muy contentos de trabajar con usted, codo a codo, cuando se trata de analizar sus configuraciones existentes, si ya es usuario de NCache. Si eres nuevo en NCache, estaremos encantados de poder configurarlo con una prueba y tener sesiones de apoyo para explicarle cómo funcionaría esto en sus aplicaciones integradas, pero, sobre todo, sepa que puede comunicarse en cualquier momento cuando se trata de cualquier consulta sobre NCache, o incluso usar el producto y si necesita ayuda. Tenemos muchas cosas nuevas en camino, también lanzamientos de nuevas versiones, así que, ya sabes, estad atentos y pronto tendremos más seminarios web de este tipo.

Un aplauso para Ron. Realmente aprecio que te hayas tomado el tiempo para una sesión hoy y espero con ansias la próxima. Gracias a todos. Gracias Zack. Por supuesto. Muy bien, todos. Que tengan todos un día maravilloso y esperamos verlos en nuestro próximo seminario web. Y solo un descargo de responsabilidad: una vez finalizado este seminario web, cargaremos una grabación del seminario web en nuestro sitio web, una vez que todo esté listo y desempolvado. Entonces, si no tuvo la oportunidad de obtener respuestas a alguna pregunta, si desea volver a visitar alguno de los puntos que hemos señalado, no dude en visitar nuestro sitio web nuevamente y consultar el seminario web grabado.

De acuerdo entonces. Saludo a todos. Tienes uno bueno. Gracias chicos. Adiós.

¿Qué hacer a continuación?

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