Desarrollo de servicios de aplicaciones y microservicios de Azure con NCache

Seminario web grabado
Por Ron Hussain y Adam J. Keller

Optimice el rendimiento y la escalabilidad de sus aplicaciones en la nube de Azure para que se ejecuten en condiciones de carga máxima. Utilice un repositorio de datos rápido, escalable y común para mejorar la experiencia de la aplicación de servicio de Azure sin pérdida de datos ni de sesión.

Este seminario web demuestra cómo integrar Azure Microservices y App Services con una caché distribuida de .NET en la nube.

Cubriremos:

  • Introducción a Azure Microservices y App Services
  • Uso de paquetes NuGet para NCache recursos de la aplicación cliente
  • Realizar NCache Llamadas a la API desde los servicios de Azure
  • Creación e implementación de una caché distribuida en Azure
  • Uso de la memoria caché para los servicios de Azure
  • Supervisión de la memoria caché que ejecuta Azure Microservices y App Services

El tema que hemos seleccionado hoy es el uso NCache que es el principal sistema de almacenamiento en caché distribuido dentro de los servicios de Azure. Mi enfoque principal hoy serán los microservicios de Azure. Hablaré sobre algunos detalles arquitectónicos de los microservicios. Hablaré sobre algunos detalles sobre por qué necesita caché distribuida en microservicios, cuáles son las limitaciones y luego también hablaré sobre los proyectos de servicios de aplicaciones web de Microsoft Azure, donde sus aplicaciones web también pueden necesitar un sistema de almacenamiento en caché distribuido para manejo de datos, para sesiones, almacenamiento en caché de salida. Entonces, ese tipo de características que voy a destacar. La agenda principal que voy a cubrir hoy, la parte práctica dentro de este seminario web, se centrará en la arquitectura de implementación. Cómo se implementa exactamente una caché distribuida y cómo necesitarían exactamente sus aplicaciones conectarse a ella.

Servicios de aplicaciones y microservicios de Azure

Entonces, primero hablaré sobre algunos detalles introductorios sobre los microservicios y los servicios de aplicaciones de Azure.

¿Qué es un microservicio?

¿Qué es un microservicio? Entonces, este es un término muy común que escuchamos mucho en estos días. Es una plataforma y la ofrece Microsoft Azure. Hay algunos AWS y también hay algunos proveedores de terceros. Por lo general, solo nombraría Akka.NET, que también es una plataforma muy popular en Java y luego la han puesto también en .NET. Un microservicio es una plataforma que encapsula los escenarios comerciales del cliente y se ocupa de ciertos problemas que el cliente tiene dentro de la aplicación. Por lo tanto, podría ser desarrollado por un pequeño equipo de ingeniería. Podría estar escrito en cualquier lenguaje de programación.

Podría tener estado, podría no tener estado, pero es algo que es independiente dentro de la aplicación. Por lo tanto, se puede versionar, implementar e implementar de forma independiente y, luego, lo bueno de la arquitectura de microservicio es que se puede escalar de forma independiente. No es necesario escalar horizontalmente una aplicación completa. Si una parte dentro de la aplicación cumple con estas características, simplemente puede implementarla como un microservicio. Su aplicación puede usarla como un recurso de microservicio y luego puede escalar horizontalmente esta parte en particular sin tener que preocuparse por la escalabilidad de toda la aplicación. Por lo tanto, le brinda un enfoque más granular hacia diferentes segmentos dentro de la aplicación.

He resaltado dos puntos comunes aquí: sus microservicios son protocolos de interfaz bien definidos y también interactúan con otros microservicios. Y luego tienen nombres únicos que es algo que obtienes en Microsoft Azure y luego deben permanecer consistentes y disponibles en caso de fallas. Esa es otra característica importante de un microservicio. Esto es algo que he copiado del sitio web de Microsoft MSDN. Entonces, y estoy bastante seguro de que todos saben qué es un microservicio. Entonces, esto debería cubrir algunos detalles básicos sobre el microservicio, ¿de acuerdo?

Tejido de servicio de Microsoft Azure

Aquí está el diagrama donde su tipo de aplicación tiene un tipo de servicio que puede ser con estado o sin estado. Ya he cubierto eso.

microsoft-azure-servicio-fabric

Hay otro tipo de aplicación que también podría tener sus propios microservicios y luego puede estar hablando con algunas fuentes de datos de back-end para código, para configuraciones. Puede estar llamando a un servicio web. También podría tener algunos datos a los que necesita acceso y luego son, ya sabes... Esta es solo una idea de cómo se estructuran los microservicios. Podría haber múltiples aplicaciones y cada aplicación podría tener múltiples microservicios, que a su vez son un grupo de servidores, grupos de instancias. Podría tener particiones dentro del microservicio. Eso es principalmente un microservicio con estado. Si tiene varios microservicios, puede elegir tener microservicios con estado o sin estado.

microsoft-azure-servicio-fabric-2

Si son microservicios con estado, tendría una partición de datos y luego hay réplicas de otra partición. Por lo tanto, si alguna partición falla, tendrá la copia de seguridad disponible automáticamente. Entonces, esto es parte de Microsoft Azure, también es parte general de la arquitectura de microservicios y eso es lo que Amazon también le brinda, Akka.NET que también tiene el mismo tipo de formato de pregunta. Entonces, el microservicio es algo que proporciona estado dentro de sí mismo dentro de su arquitectura de manera predeterminada. Entonces, resaltaré dónde exactamente necesita un almacenamiento en caché distribuido como NCache. ¿Por qué exactamente necesita un caché distribuido y hay algunos cuellos de botella? Hay algunos problemas que el caché distribuido ayudará a abordar como parte de este seminario web, que voy a cubrir.

Introducción a los servicios de aplicaciones web de Azure

Luego también hablaré sobre los servicios de aplicaciones web de Azure. Es más fácil implementar aplicaciones web en Microsoft Azure.

introducción-a-azure-webapp-services

No es necesario tener una máquina virtual completa. De hecho, reduce el tiempo de DevOps, la cantidad de experiencia necesaria, el tiempo que lleva, es algo que se gestiona. Por lo tanto, podría implementar una aplicación basada en instancias en Microsoft Azure. Es un entorno dedicado completamente aislado para sus aplicaciones. Puede escalarlo. Puede alojar varias aplicaciones. Pueden ser sus aplicaciones móviles, web o sus aplicaciones de funciones, lo que sea necesario en este momento, puede usarlo usando nuestro modelo de servicio de aplicaciones web de Microsoft Azure.

Y luego es altamente escalable, ya mencioné que el aislamiento está garantizado. Obtiene un acceso seguro a la red y luego también puede usar una alta utilización de memoria y otros recursos que se necesitan. Y, esta es una transición que la mayoría de las implementaciones están tomando donde en realidad, en lugar de tener toda la VM alojando su aplicación en un formulario web o un escenario de jardín web donde tiene que administrar toda la VM, puede tener un enfoque basado en instancias. donde se puede implementar una aplicación basada en servicios y podría ser una aplicación MVC típica que puede usar sesiones, que puede usar llamadas a bases de datos. Entonces, todo tipo de conceptos relacionados con la aplicación web MVC regular, pero es solo que la implementación es ligeramente diferente.

Almacenamiento en caché distribuido

Ahora que hemos definido los microservicios de Azure y los servicios de aplicaciones web de Azure, ¿verdad? Entonces, el microservicio en Microsoft Azure es un proyecto de tejido de servicio, mientras que los servicios de aplicaciones web son un proyecto de servicio de aplicaciones. Entonces, resaltaré los detalles al respecto y hablaré sobre la pieza de red que necesita para usar en el caché distribuido.

¿Qué es una caché distribuida en memoria?

Primero, hablaré sobre los conceptos de almacenamiento en caché distribuido en general.

whats-memory-caché-distribuida

¿Qué es una caché distribuida? Un caché distribuido es un grupo de servicios de almacenamiento en caché de bajo costo que se agrupan para la memoria y sus recursos para el poder de cómputo y luego su poder de almacenamiento y, en el caso del caché distribuido, es la memoria que presenta el almacenamiento principal. Por lo tanto, agrupa todos los recursos de memoria en una capacidad lógica.

Luego puede sincronizar sus actualizaciones de caché en todos los servidores de caché. Por ejemplo, cualquier actualización que se aplica en un servidor determinado se aplica en todos los servidores de almacenamiento en caché. Entonces, el caché distribuido es un grupo de múltiples servidores de caché económicos que se unen en una capacidad lógica. Tiene varios servidores en Microsoft Azure, estos van a ser máquinas virtuales. Asi que, NCache se implementa en una máquina virtual. Esta es la opción de implementación actual. NCache también se puede implementar en la ventana acoplable, ¿verdad? Entonces, esa es otra opción de implementación. Por lo tanto, el servidor de caché se ejecuta en una máquina virtual, pero se tratará como un recurso separado dentro de Microsoft Azure y esa es la implementación típica en la medida de lo posible. NCache se refiere a la configuración del lado del servidor.

La siguiente característica de un caché distribuido es que debe tener todas sus actualizaciones de caché sincronizadas en todos los servidores de almacenamiento en caché. Podría tener 2 3 4 servidores de almacenamiento en caché y deberían tener una vista coherente de los datos. Los datos deben ser visibles como un mismo estado para todas las aplicaciones que están conectadas a ellos.

Y, entonces, podría escalar linealmente la memoria y las transacciones a medida que aumenta su capacidad, necesita más almacenamiento, más recursos, simplemente puede introducir más y más servidores de almacenamiento en caché y debería crecer linealmente. Y... luego, la replicación es otra parte que debe replicar los datos, ya que cualquier dato que se agregue si el servidor deja de funcionar debería replicarse automáticamente. La replicación debe realizarse en función de la operación, luego los datos deben estar disponibles si un servidor deja de funcionar.

Entonces, estas son algunas características comunes del caché distribuido.

El almacenamiento de datos es un cuello de botella de escalabilidad

Por lo general, sus aplicaciones, ya sean servicios de aplicaciones, microservicios, pueden estar hablando con algunas fuentes de datos de back-end. En Microsoft Azure, podría tener una instancia de servidor de secuela que podría estar en la misma red V o en una red V cruzada, pero aún se comunica con el servidor de la base de datos.

el almacenamiento de datos es un cuello de botella

Por lo tanto, podría ser lento, puede que no sea muy escalable. Por lo tanto, también tiene más sentido introducir una capa de almacenamiento en caché distribuida en Microsoft Azure. Y también hablaré sobre casos de uso con respecto a los servicios en la aplicación de microservicios.

NCache Despliegue

Este es un despliegue típico de NCache.

ncache implementación en Azure

Entonces, en Microsoft Azure, tendría máquinas virtuales que se escalarían horizontalmente, simplemente podría crear una red virtual, crear máquinas virtuales y luego instalar NCache en esas máquinas virtuales o use nuestras imágenes de Azure o AWS. Entonces, para hablar, sus aplicaciones pueden conectar microservicios, aplicaciones API, aplicaciones típicas alojadas en IIS en otras máquinas virtuales o podrían ser servicios de aplicaciones, todos pueden conectarse a esto y le ahorra viajes a las fuentes de datos de back-end. Entonces, esa es la idea general de una implementación típica de NCache y revisaré esto una vez que pasemos a nuestra implementación de microservicios y servicios de aplicaciones de Azure. En la nube esto cambiaría ligeramente. Entonces, hablaremos de eso.

Tres usos comunes de NCache

¡DE ACUERDO! esta es la diapositiva más importante dentro de este seminario web. Quiero resaltar dónde usaría exactamente un caché distribuido en los servicios de Microsoft Azure, ¿verdad? Por lo tanto, normalmente se habla de aplicaciones web, servicios web, aplicaciones back-end, servicios de ventana, que necesitan acceder a datos desde una fuente centralizada y necesitan un repositorio muy rápido. Entonces, ese es un caso de uso típico. En Microsoft Azure, ya tienes una plataforma muy escalable. Sus aplicaciones pueden escalar linealmente y ese es el caso típico con formularios web y jardín web también.

Por lo tanto, he enumerado algunos casos de uso importantes que puede usar dentro de Microsoft Azure para los servicios.

Almacenamiento en caché de datos de aplicaciones

En primer lugar, puede usarlo para el almacenamiento en caché de datos y esto se aplica a los microservicios de Microsoft Azure y también a los servicios de aplicaciones. Si hay servicios apátridas, ¿no? Porque los servicios con estado requerirían su propio conjunto de particiones y luego también tendría réplicas, pero los sin estado no tienen réplicas. Entonces, un aspecto importante es que tiene una aplicación sin estado pero aún desea tener confiabilidad en los datos, ¿verdad? Entonces, en ese caso, puede colocar datos en un caché distribuido. La caché distribuida por diseño puede cubrir el aspecto de replicación y el aspecto de alta disponibilidad. Por lo tanto, sus datos estarían disponibles incluso para los microservicios sin estado.

Y, el próximo beneficio podría estar dentro del microservicio o el servicio de aplicaciones, si hay una aplicación web que puede comunicarse con una fuente de datos de back-end, como el servidor SQL. Entonces, el servidor SQL es lento. No es algo que pueda manejar una gran carga de transacciones. En respuesta a eso, un caché distribuido puede tener varios servidores, que se escalan linealmente y se unen en una capacidad lógica, ¿verdad? Por lo tanto, puede agregar más y más servidores sobre la marcha. Y, en Microsoft Azure, es muy simple administrar eso. Simplemente puede generar una nueva máquina virtual y duplicaría su capacidad a medida que agrega más y más servidores de almacenamiento en caché. Entonces, el caso de uso de almacenamiento en caché de datos, es primero que nada en la memoria. Por lo tanto, es una base de datos de capacidad súper rápida y luego es una plataforma muy escalable incluso en Microsoft Azure en comparación con su servidor Microsoft SQL. Entonces, estos son dos beneficios que obtiene en los servicios de aplicaciones de Microsoft Azure y el caso de uso de Microsoft. Solo tienes que presentarte NCache Llama a la API y sigues agregando datos en un par de valores clave.

Almacenamiento en caché específico de ASP.NET

El segundo caso de uso es específico de los servicios de aplicaciones web de Microsoft. Se trata del almacenamiento en caché específico de ASP.NET. Entonces, si tiene un servicio de aplicaciones, puede usar NCache, donde tu servicio de aplicaciones habla con NCache tanto para sesiones como para datos de almacenamiento en caché de salida. Por cierto, también puede usar la API de almacenamiento en caché de objetos porque este caso de uso también se aplica a los servicios de aplicaciones ASP.NET. Por lo tanto, su estado de sesión generalmente será parte de la misma instancia de servicio de aplicaciones que exige que necesite un equilibrio de carga de sesión permanente o podría ser parte de la base de datos. De cualquier manera, si se trata de una sesión persistente, está limitada en la que debe tener un equilibrio de carga persistente, que es la opción predeterminada. Y, luego, en el lado de la base de datos, nuevamente va a ser lento y también es el único punto de falla.

Con servicios de aplicaciones, usando NCache como proveedor de sesiones, en primer lugar, es muy escalable. Es extremadamente rápido y no habría ningún punto único de falla. Las sesiones se replican entre servidores, por lo que es donde obtiene una ventaja en la que debe considerar el uso de un caché distribuido para sus aplicaciones ASP.NET. Y, luego, esto también podría ser una implementación en varios sitios y esto es algo que planeo cubrir hoy también donde tendríamos una aplicación implementada en un sitio que se comunica con los servidores de almacenamiento en caché en el mismo sitio y luego tiene la capacidad de hablar. a los servidores de almacenamiento en caché en todo el sitio también. Y resaltaré qué configuraciones se necesitan dentro de Azure pero eso es imposible dentro NCache ofertas de almacenamiento en caché distribuidas dentro de Microsoft Azure.

El segundo caso de uso es el almacenamiento en caché de salida, ¿verdad? Por lo tanto, podría usar sus páginas estáticas dentro de un servicio de aplicaciones dentro de una aplicación web implementada como un servicio de aplicaciones. Si hay páginas estáticas, almacena en caché el contenido de esas páginas. La salida de la página completa se puede almacenar en caché y puede usar esa salida de página la próxima vez que necesite acceder a la misma página. Entonces, ese es otro beneficio. Esto es algo que cubro en nuestro seminario web típico de rendimiento y escalabilidad de ASP.NET, donde hablo sobre cuatro formas diferentes de optimizar el rendimiento de ASP.NET. Entonces, el mismo concepto se aplicaría en los servicios de aplicaciones de Microsoft Azure, donde una aplicación web se implementa como un servicio de aplicaciones.

Uso compartido de datos en tiempo de ejecución y Pub/Sub

Ahora, el tercer caso de uso importante y esa es la parte más importante cuando se trata de microservicios. Aunque también se aplica a los servicios de aplicaciones. Los servicios de su aplicación pueden necesitar compartir datos directamente con un servicio de aplicación hablando con otro servicio de aplicación o podrían ser datos que se comparten entre dos aplicaciones diferentes. Entonces, hay aplicaciones web que son de naturaleza diferente pero dependen de los mismos datos. Podría haber una aplicación de informes y podría haber un consumidor de eso, o podría haber un productor en términos de catálogos de productos y luego hay otra aplicación que necesita depender de eso, necesita generar algunos informes basados ​​​​en la primera aplicación . Entonces, ese caso de uso exige que sus aplicaciones compartan datos entre otras. Por lo tanto, no hay forma de que pueda usar la base de datos para compartir datos, pero eso es lento y también es un punto único de falla en algunos casos. La caché distribuida tiene más sentido porque sus aplicaciones pueden conectarse a ella en un modelo cliente-servidor. Múltiples aplicaciones pueden conectarse al mismo nivel de almacenamiento en caché y luego pueden usar los mismos recursos de caché y obtener acceso a los mismos datos y eso es algo que puede activar.

En los microservicios de Azure, debemos llevarlo a otro nivel. En los microservicios de Azure, aunque estos están agrupados y ya mencioné que allí pueden ser con estado y sin estado, ¿no? Podría haber un requisito y esto es algo que mencioné que sus microservicios también pueden necesitar interactuar con los microservicios, ¿verdad? Entonces, por diseño, la arquitectura de microservicios requiere que sus instancias de servicio necesiten interactuar entre sí y luego compartir datos entre sí. Y ese es un requisito fundamental en lo que respecta a la plataforma de microservicios. Simplemente necesitamos que varias instancias de aplicaciones compartan datos entre sí. Un microservicio que envía algunos datos y está disponible para otras instancias de microservicios, si tiene estado o si puede tener múltiples aplicaciones interactuando en las mismas líneas, pero dentro de dos microservicios esto es algo que se debe tener y, por lo tanto, muchos proveedores externos están proporcionando el intercambio de datos y el modelo pub/sub como parte de sus ofertas, ¿verdad?

Entonces, en Microsoft Azure, si hay un requisito en el que necesita que se maneje el intercambio de datos donde una aplicación habla con una tienda y tiene datos que necesita otra aplicación, otra instancia de microservicio, entonces necesita una plataforma para manejar eso y NCache ofrece esa plataforma donde los datos están disponibles de manera centralizada. Es un repositorio extremadamente rápido. Además, es extremadamente escalable. Múltiples instancias de microservicios, diferentes servicios o instancias de los mismos servicios pueden conectarse a este caché y luego pueden usar las funciones de intercambio de datos. Por lo tanto, los datos están disponibles centralmente de una manera más rápida.

Luego tenemos el modelo pub/sub basado en temas. Tenemos una plataforma de mensajería fuera de eso. Por lo tanto, se puede enviar un mensaje, podrían ser mensajes basados ​​en datos o podrían ser mensajes basados ​​en aplicaciones o mensajes basados ​​en temas donde la aplicación productora y esa es una instancia de microservicio que envía datos al caché y luego ese mensaje se transmite a todos los destinatarios. en este extremo del suscriptor. Y, del mismo modo, los suscriptores también pueden ser productores en algunos casos. Por lo tanto, podría usar la mensajería de publicación/suscripción entre varias instancias de microservicios de Azure. También podría ser el intercambio de datos impulsado por eventos entre múltiples instancias. Y, además, tenemos notificación de eventos y un sistema de consulta continua. Podría ser un comando SQL y, en función de eso, puede definir un conjunto de datos nuevamente contra el cual puede obtener mensajes basados ​​​​en datos de esto. Entonces, ese es el caso de uso que consideraría usar la memoria caché distribuida de Microsoft Azure dentro de los microservicios de Microsoft Azure.

NCache Escenarios de implementación en MS Azure

Luego también hablaré sobre los servicios de aplicaciones web de Azure. Es más fácil implementar aplicaciones web en Microsoft Azure.

escenarios de implementación

Bien. Entonces, ahora tenemos dos tipos de escenarios correctos. Entonces, tendríamos todo implementado en una sola región en un solo sitio dentro del mismo grupo de recursos o preferiblemente dentro de la misma red virtual, ¿verdad? Entonces, ya he discutido eso NCache se implementará en máquinas virtuales en Microsoft Azure, mientras que sus aplicaciones pueden ser máquinas virtuales que acceden a esas máquinas virtuales de NCache o estos podrían ser servicios de Azure y hoy nos centraremos en los servicios de Azure. El caso de VM es muy típico en el que genera una VM, va al iAS, aloja su aplicación allí y luego hace que su aplicación se conecte a NCache usando NCache API o proveedor de almacén de sesiones. Pero, cuando se trata de servicios, debe realizar alguna configuración de red. Entonces, que su servicio hable con NCache.

Entonces, tenemos una implementación en un solo sitio donde sus servicios de Azure y NCache se implementan en la misma región en el mismo sitio. Por lo tanto, su servicio de Azure cuando lo implementa, debe adjuntarlo al mismo grupo de recursos y también a la misma red virtual. Entonces, ese es el enfoque recomendado. No necesitarías de ningún intermediario. No habría múltiples saltos, no ralentizaría las cosas. Entonces, ese es el escenario recomendado para nuestro sitio.

Segundo escenario, ese también es un escenario muy válido en el que puede tener varios sitios, ¿verdad? Todavía recomendamos que su caché y sus aplicaciones, sus servicios de aplicaciones de microservicios siempre estén en la misma región en la que deberían poder conectarse entre sí. Ya que NCache es un protocolo TCP-IP. Entonces, usa direcciones IP y puertos para toda la comunicación y estos son puertos TCP-IP. Por lo tanto, debe implementarse de tal manera que sus aplicaciones estén cerca. Están desplegados en combinación entre sí. Están cerca, no son diferentes saltos disponibles. Por lo tanto, recomendamos que su caché se implemente en el mismo sitio donde están sus aplicaciones, pero podría haber un escenario en el que esté utilizando funciones de varios sitios. Donde su aplicación puede necesitar comunicarse con el caché en otro sitio o sus cachés deben comunicarse entre sí. Entonces, necesitamos comunicación de sitio a sitio entre NCache .

Entonces, esa es la agenda en la que cubriré estos dos escenarios. Se recomienda el escenario 1, todo está en los sencillos más cercanos a su aplicación. El escenario dos es que puede tener varios sitios y su aplicación del sitio uno se comunica con los servidores de almacenamiento en caché en el sitio dos o podría ser servidores de almacenamiento en caché. Por ejemplo, para la función de replicación de WAN, podría tener un puente entre las cachés del sitio uno y del sitio dos.

Escenario 1: Implementación en un solo sitio para Azure Services y NCache (Recomendado)

Por lo tanto, para la implementación en un solo sitio de los servicios de Azure, cubriré algunos pasos detallados al respecto. Hablaré sobre el desarrollo de aplicaciones, cómo se presenta NCache llamadas dentro de su aplicación y usaremos un proyecto de servicio para esto como ejemplo de referencia. Bien. Entonces, este es el diagrama que debe cubrir todos los detalles que planeo cubrir en este seminario web.

implementación en un solo sitioncache-azur

ya lo mencione NCache los servidores van a ser máquinas virtuales en Microsoft Azure. ¿Derecha? Por lo tanto, debe ocuparse de la red virtual que admite estas máquinas virtuales y luego NCache debe instalarse en estos y luego en sus aplicaciones web, que se implementan como servicios de aplicaciones, podrían ser aplicaciones API o podrían ser aplicaciones de microservicio, ¿verdad? Todos ellos son instancias de servicio. No hay máquinas virtuales subyacentes. Entonces, eso también significa que no puede instalar NCache en estos recursos, debe incluir esto como parte de los recursos de la aplicación. Entonces, hay paquetes de NuGet que destacaremos. ¡Bien! Entonces, tenemos aplicaciones web y luego tenemos aplicaciones API y también podría haber microservicios y otras aplicaciones.

Entonces, esta es una implementación típica de un solo sitio donde tenemos la misma red virtual de Azure que aloja sus aplicaciones, así como el VMS de NCache. Y, lo que realmente estamos haciendo en esto es una VPN punto a sitio entre sus aplicaciones web y sus aplicaciones de servicio y NCache Servicio. Entonces, así es como se ve la red en general. Es parte de la misma red virtual donde realmente usaremos un proyecto de servicio. vamos a presentar NCache recursos en él, entonces crearemos recursos del lado del servidor para NCache. Entonces, nuestras máquinas virtuales están en funcionamiento y luego simplemente volvemos a la aplicación y adjuntamos nuestra aplicación a la misma red virtual donde nuestra NCache Las máquinas virtuales existen. Entonces, eso lo convertiría en un solo sitio y usaría la misma red virtual que nuestro servicio de almacenamiento en caché.

pasos para la implementación en un solo sitio
Paso 1 para la implementación en un solo sitio: crear máquinas virtuales para NCache

Entonces, repasemos los pasos con estos.

paso1 de sitio único

¡Bien! El primer paso es que tienes NCache del lado del servidor y calentarlo, lo que en realidad significa configurar máquinas virtuales de Azure para NCache y este paso es común para todo tipo de implementación, ya sea una implementación en un solo sitio o una implementación en varios sitios. Para la implementación en un solo sitio, solo necesita que su NCache los servidores están configurados, son máquinas virtuales y luego NCache está instalado en esos. Entonces, lo llevaré rápidamente a nuestro portal de Azure, ¿verdad? Y, si solo voy a los grupos de recursos, acabo de crear un grupo de recursos, déjenme ordenarlo. Mi primer grupo de recursos es el grupo de recursos de demostración uno, ¿verdad? Y, aquí tenemos todo tipo de VM, por ejemplo, tenemos la VM de demostración uno y luego también tenemos la VM de demostración dos y, de hecho, he usado la misma red virtual, mi error... ¡Está bien! He usado la misma red virtual para estas dos máquinas de demostración.

Déjame mostrarte rápidamente el... déjame traerlo aquí. ¡Bien! Entonces, tenemos la VM de demostración uno, si observa esto, está implementada en Europa occidental y luego tenemos la VM de demostración dos y luego hay una VM de demostración v-net one, ¿verdad? Si hago clic en él, puedo ver la demostración VM 1 y la demostración VM 2 como parte de esto y estas son las direcciones IP 10.4.0.4 y 10.4.0.5. Entonces, eso representa a nuestros dos NCache Máquinas virtuales y si te llevo rápidamente a este entorno aquí.

Entonces, lo que realmente hice es crear una VM, una imagen vacía de 2012 o 2016 serviría y luego fui a nuestra Alachisoft sitio web y todo lo que necesita, no hay ningún instalador especial para NCache. Solo necesita usar el instalador existente. Vaya a la página de descarga y descargue la prueba de 30 días de NCache desde nuestro sitio web y una vez que haya hecho eso, he instalado NCache en la VM de demostración 1 y la VM de demostración 2. Y, luego, también creé una caché de red V de demostración. Los pasos de creación de caché son muy simples. Solo necesita ir a la caché de demostración, tomar la topología de almacenamiento en caché, asíncrono y especificar la VM 1 de demostración y luego creo que la VM 2 de demostración debería elegir la IP tal como está. Sí lo hace. Entonces, estos servidores pueden comunicarse entre sí.

Un paso adicional que he tomado, si vuelvo a la presentación, estos son los pasos necesarios para configurar NCache servicio para Microsoft Azure. Creas una red virtual de Azure, ¿verdad? Eso es algo que quizás ya tengas en tu entorno. Y luego crea máquinas virtuales en esas redes virtuales de Azure. Por lo tanto, podría tener un conjunto dedicado de máquinas virtuales para NCache; servidor uno servidor dos servidor tres. Y luego te aseguras de mantener las mismas subredes. Eso es algo que recomendamos y luego instalas NCache en todas esas máquinas virtuales. Entonces otra cosa es que abres NCache puertos para comunicación. Hay dos tipos de puertos, dos tipos de consideraciones de red que debe tener. Una es que necesita tener el firewall interno deshabilitado y luego en la red donde están estas máquinas virtuales, debe tener un grupo de seguridad de red, ¿verdad?

Entonces, por ejemplo, una VM de demostración en un grupo de seguridad de red, ya tendríamos estos puertos abiertos, ¿verdad? Entonces, si te muestro rápidamente el NCache puertos, todo lo que necesitamos es el puerto 9800 y 48250. Esto es tanto para comunicaciones entrantes como salientes. 9800 y 48250 Entonces, esto aseguraría que cualquier aplicación que intente usar NCache, que usa el puerto 9800, puede conectarse a estos servidores de almacenamiento en caché y luego cualquier aplicación que intente administrar, por ejemplo, podría haber otra máquina virtual que intente administrar esto y podría cruzar la red virtual, pero es parte de la mismo grupo de recursos, este grupo de seguridad de red le permite tener esta comunicación en estos puertos. Eso es todo. Esa es la consideración que usted necesita tener.

He desactivado el cortafuegos en los propios servidores de almacenamiento en caché. Y estos puertos están abiertos y acabo de crear un caché y puedo ver las estadísticas. Puedo simplemente ejecutar una aplicación de herramienta de prueba de estrés en estas máquinas directamente y puedo hacerlo rápidamente, hay un poco de retraso, así que tengan paciencia conmigo. Y también puedo simular algo de estrés en estos. Entonces, lo siento, tenemos V net one cache y simplemente ejecutamos y simulamos la actividad en estos dos servidores de almacenamiento en caché. Entonces, así de fácil es en lo que respecta a la configuración del lado del servidor. Ahora, debe volver a su aplicación y echarle un vistazo. ¡Sí! ahí vas Entonces, tenemos actividad entrando. Entonces, estamos bien. Solo voy a cerrar esto.

Paso 2 para la implementación en un solo sitio: implementar Azure Service en el entorno

A continuación, ahora que tenemos máquinas virtuales configuradas, también he creado un clúster de caché, lo siguiente es que necesito una aplicación web que pueda comunicarse con este clúster de caché, ¿verdad? Entonces, regresaré rápidamente a mi presentación aquí, ¿verdad?

paso2 de sitio único

Entonces, desde el punto de vista de sus aplicaciones, lo que realmente necesita es una configuración de red punto a sitio entre su aplicación, en su servicio de aplicaciones en NCache. Entonces, antes que nada, ya lo he hecho, ¿verdad? solo para resaltar eso. Ahora, si regresa al grupo de recursos, tenemos el grupo de recursos de demostración 1. Entonces, tenemos una puerta de enlace de red virtual de demostración, ¿verdad? Creamos una puerta de enlace en esto, ¿verdad? Y, entonces tenemos un punto de sitio. Esta es una puerta de enlace de red virtual que utiliza una v-net de demostración, que es la red principal para nuestro servicio de almacenamiento en caché. Entonces, si vuelvo aquí, si observa este diagrama, en realidad usa una puerta de enlace de red virtual aquí, que es parte de esta red virtual y luego mis aplicaciones, que implementaré en breve, tendrán un punto de sitio. comunicación en curso entre esto para que esté conectado a la misma red virtual. Ese es el requisito de Microsoft Azure. Para que su servicio de aplicaciones se comunique con los recursos que se encuentran en una red virtual, por ejemplo, máquinas virtuales, debe tener una configuración de punto a sitio.

Entonces, volviendo aquí mismo. Entonces, tenemos un grupo de recursos de demostración. Incluso si les muestro el punto a sitio, permítanme venir aquí, si les muestro las configuraciones de punto a sitio, tenemos esta IP, que es una IP general para nuestros servicios de aplicaciones. Entonces, una vez que se implementa un servicio de aplicaciones, hace clic en él y luego lo adjunta a la red virtual correspondiente.

Entonces, volveré a mi proyecto, creo que no lo mostré antes, pero esta es una aplicación de muestra que es una aplicación de servicio. Te voy a mostrar lo que se necesita. Entonces, si hace clic derecho sobre él, tiene paquetes NuGet disponibles para Microsoft Azure.

demo-paso1-sitio único

Entonces, por ejemplo, tenemos Alachisoft.NCache.SDK. Estos están disponibles de forma privada con nosotros, ¿verdad? Estos equipan sus aplicaciones con todas las NCache apunta a los recursos porque no hay ninguna instalación de NCache del lado del cliente. Típico NCache la implementación es que tiene un cliente instalado, tiene un servidor instalado. Entonces, lo cubre, ¿verdad? Pero, con los servicios es una instancia. Por lo tanto, no tiene acceso a la máquina virtual subyacente. Entonces, en ese caso, necesita los paquetes NuGet. Entonces, que todos los recursos se hagan parte de los que necesita dentro de la aplicación. Entonces, este es el paquete de turrón que ya instalé. Lo que realmente ha añadido todo el NCache bibliotecas del sitio del cliente, ¿verdad? Entonces, eso es que también ha agregado algunas configuraciones. Entonces, tenemos client.ncconf, ese es el archivo principal que se conecta a cualquier caché.

Por ejemplo, ya tengo configuraciones para conectarme a V net one cache ese es el nombre y luego también tengo las direcciones IP internas para conectarme a ellas. Lo siguiente es que publico esta aplicación y luego esta aplicación debería poder acceder a 10.4.0.4 para VM uno y 10.4.0.5 para VM dos. Por lo tanto, necesito asegurarme de que haya un punto de comunicación del sitio donde esta IP pública sea accesible para mi aplicación, solo entonces podría conectarse con este caché.

Entonces, volviendo a la aplicación, estoy mostrando algunas llamadas de caché. Entonces, dentro de este proyecto MVC, tenemos nuestro controlador principal donde tenemos esta instancia de caché y luego estoy usando la instancia de caché. InitializeCache. Permítanme ir a este método aquí. Entonces, este es el método inicializado, NCache.initializeCache y luego también llamamos a cache.insert para agregar un elemento, Cache.delete para eliminar ese elemento, cache.get para recuperar el elemento y luego, si no estoy seguro de haber realizado alguna prueba de carga, ¡sí! Entonces, hay otro método de prueba de carga que en realidad carga el elemento, se cargan miles de elementos en el caché y luego también se recuperan. Por lo tanto, esto debería ocuparse de la lógica principal y de nuestra aplicación.

Hay algunas vistas que te mostraré. Por lo tanto, también tenemos pruebas de eliminación, obtención, indexación y carga, y estas simplemente se llaman a través de nuestra aplicación. Entonces, lo que haré es que estos son básicos NCache llamadas Entonces, lo que haré a continuación es simplemente implementar esto en Microsoft Azure. Entonces, ya configuré todos los grupos de recursos y la pieza de trabajo en red, aquí mismo. Pero, lo que realmente necesita es que, si se trata de una aplicación de Microsoft Azure, simplemente cree un nuevo nombre de aplicación web basado en su suscripción. Esperemos un tiempo. Entonces, que recoge la suscripción. Ahí tienes Por lo tanto, eligió automáticamente la empresa de Visual Studio y luego el grupo de recursos, solo planeo usar el grupo de recursos de demostración uno. Entonces, estoy usando la implementación de un solo sitio. Entonces, es parte del mismo grupo de recursos y luego elijo el plan de servicio y luego elijo crear. Podrías poner nuevo aquí también. Entonces, incluso la ubicación es Europa occidental, ¿de acuerdo? Elija Aceptar en esto y luego elija crear y automáticamente comenzará con eso.

Desde entonces, ya he hecho esto. Entonces, lo que hago a continuación es simplemente ir a mi configuración web, asegurarme de que esté usando V net cache one y dentro de client.ncconf tenemos el caché V net one. Por lo tanto, esta aplicación se implementará en el mismo sitio. El mismo extremo del grupo de recursos y luego lo adjuntaré a la red virtual que es parte de mi NCache máquinas virtuales de servidores.

Volviendo a Microsoft Azure, en un momento, si voy al grupo de recursos uno, deberíamos tener esta aplicación en alguna parte. ¡Ahí tienes! Si hace clic en él y luego en la pieza de red de esta aplicación una vez que se implementa, ¿verdad? Entonces, ¡bien! Entonces, vas a la red, haces clic en ella y luego ya está conectada a la demo v-net one, ¿verdad? Ya he hecho esto, ¿verdad? Entonces, en su caso, una vez que establece una conexión de punto a sitio en su puerta de enlace de red virtual, tiene un grupo de recursos de demostración uno, ¿verdad? Retomando esto, aquí mismo. Entonces, una vez que cree una red virtual, cree un punto en el sitio y luego esta IP del servicio de aplicaciones queda expuesta, después de implementar su servicio de aplicaciones, debe adjuntarlo a la red virtual, ¿verdad? Entonces, esto es algo que es un paso adicional que se necesita, aquí mismo. Entonces, mi aplicación espero que esté cargada. ¡Lo estoy esperando, sí!

Ahora, en el extremo del servidor, solo voy a borrar el contenido e insertaré un elemento. Agregado con éxito en el caché. Y, pueden ver un artículo en él. Lo conseguiré rápidamente. Lo siento, realmente no puedo mostrarle los contadores, pero en realidad lo recuperó y luego puedo eliminarlo, ¿verdad? Entonces, y dado que es parte de la misma red virtual, es mucho más rápido en comparación.

Ahora solo simularé algunas pruebas de carga. Solo agregaré miles de elementos y debería ver algo de actividad. Ahí tienes, ¿verdad? Entonces, las solicitudes por segundo y esos elementos se agregan y luego se pueden ver alrededor de 600 elementos aquí, aproximadamente 400 elementos aquí y luego no se recuperan esos elementos. Entonces, esa es una implementación típica de sus servicios, ya sean microservicios, servicios de aplicaciones, aplicaciones API, cualquier aplicación implementada en un modelo de servicio. Solo necesita introducir paquetes NuGet, crear una conexión de punto a sitio para NCache Las máquinas virtuales a través de su puerta de enlace de red y luego su instancia de aplicación se pueden adjuntar a la máquina virtual. Estas son todas las configuraciones de red de Microsoft Azure y NCache solo necesita que las direcciones IP privadas se expongan en el canal TCP-IP. Entonces, eso es todo lo que necesitamos.

Escenario 2: Implementación en varios sitios para servicios de Azure y NCache

Entonces, a continuación, dado que tenemos menos tiempo disponible, creo que en los últimos 10 minutos también cubriré el escenario de sitios múltiples. Las configuraciones son casi similares.

despliegue multisitio-ncache-azur

Tenemos nuestras aplicaciones web o servicios de Microsoft o servicios de aplicaciones implementados en una red virtual de Azure o en un sitio y luego NCache VM u otro sitio y para eso lo que realmente necesitamos es una puerta de enlace de red local aquí y una puerta de enlace de red virtual aquí y luego necesitamos una conexión de sitio a sitio entre estos dos. Nuevamente, estas son nuevamente todas las configuraciones de Microsoft Azure que equipan dos lados para conectarse entre sí mediante una conexión de sitio a sitio y NCache utiliza esos y las IP internas se asignan en cada lado. Entonces tus NCache Las direcciones IP internas del servidor se asignan a la red virtual de servicios de su aplicación y nosotros viceversa.

Y para eso te mostraré rápidamente las configuraciones. Si lo vuelvo a traer a los grupos de recursos, tenemos el grupo de recursos de demostración dos, ¿verdad? Entonces, esa es otra red virtual. Y tenemos la demostración v-net dos, aquí mismo, y también tengo dos cajas en esta red virtual, la demostración VM 3 y la demostración VM 4. Entonces, este entorno aquí es 10. 4.0.4 que es otra red virtual. También podría ser a través del sitio. Solo estoy usando la analogía de otra red virtual como otro sitio. Pero podría ser un sitio cruzado, podría ser otro centro de datos en otra región en Microsoft Azure.

Pasos para la implementación en varios sitios: implementar Azure Service en el entorno

Entonces, lo que realmente necesita es mantener la misma configuración para esto como ya expliqué.

pasos para la implementación en varios sitios

Mantenga la parte de la VM en la misma red virtual, la misma subred, cree un caché, inicie ese caché y ahora su aplicación necesita conectarse a nuestro caché, que es un sitio cruzado. Para eso, necesita una comunicación de sitio a sitio. Y, si vuelvo aquí en este grupo de recursos de demostración, dado que tenemos una red virtual de demostración y una puerta de enlace de red virtual de demostración, sí, ahí tienes, la puerta de enlace de red virtual 2, ¿verdad? Entonces, esa es una puerta de enlace en el segundo sitio. Entonces, si vamos a las conexiones, tenemos una conexión de sitio a sitio de demostración 2. Por lo tanto, tenemos una conexión de sitio a sitio con la puerta de enlace de red local de demostración 2. Entonces, eso es algo que he configurado, ¿verdad? Entonces, eso permite que mi red virtual uno se conecte a la red virtual dos que están en el sitio. Entonces, esto es exactamente lo que hemos hecho.

Te mostraré rápidamente el NCache aplicación que nada cambia aquí. Solo necesita cambiar el nombre del caché y luego debería tener las direcciones IP para conectarse a los servidores de almacenamiento en caché que tengo como parte de la pila. Entonces, v-net para almacenar en caché y usaré la misma aplicación para conectarme ahora, solo necesito publicarla una vez más y notar que todavía la publico en el grupo de recursos de demostración uno. Mientras que nuestras máquinas virtuales están en el grupo de recursos de demostración dos. Y esta es la VM 3, justo aquí, donde tenemos dos servidores de almacenamiento en caché. Entonces, solo publicaré esto una vez más manteniendo una conexión de sitio a sitio ya configurada. Simplemente publicaré esto y la misma aplicación ahora atravesaría la red, el sitio desde la red virtual 1 hasta la red virtual 2 y podría conectarse a esto. Entonces, solo esperaré a que se publique y luego regresaré aquí y les mostraré la pieza de trabajo en red una vez más.

Entonces, lo que realmente necesita es la misma configuración para las máquinas virtuales, mantenga la misma red virtual aquí, la misma subred, genere el VMS, instale NCache en ellos, deshabilite el firewall, configure el grupo de seguridad de la red para que NCache los puertos están abiertos y luego necesita una conexión de sitio a sitio entre sus aplicaciones como servicios que se conectan a NCache Servicio. Entonces, si ya tiene una red virtual a la que están conectados los servicios de su aplicación, solo debe asegurarse de que la red virtual 1 ahora pueda comunicarse con la red virtual 2 y luego haya un sitio cruzado y esto es exactamente lo que hice. en Microsoft Azure también. Entonces, la publicación fue exitosa. Creo que esto fue todo. Permítanme cerrarlo y dejarme insertar un elemento, ¿de acuerdo? Y veamos si se ha agregado un elemento, ahí lo tienes. Entonces, ahora se ha agregado el artículo. Entonces, ahora está hablando a través del sitio, de un sitio a otro y luego, si obtengo este elemento, simplemente se recuperará. Si lo elimino, este elemento desaparecerá de mi demostración VM 3, no hay elementos allí y, de manera similar, solo simularé una prueba de carga en la que comenzaré a usar el mismo entorno, pero solo estoy simulando alguna actividad en eso.

Entonces, ahora mi sitio uno, los servicios de aplicaciones están hablando con el servicio de caché del sitio 2. Están cruzando el sitio. No es un escenario recomendado porque hay una replicación de WAN o una latencia de WAN que puede formar parte de ella. Por lo tanto, recomendamos mantener todo en el mismo sitio, pero es posible que haya un escenario en el que se base en la función de sesiones de varios sitios, por ejemplo, en función de la función de aplicación de banner de NCache. Podría ser que las aplicaciones locales hablen con Azure o las aplicaciones de Azure hablen con una premisa y viceversa. Entonces, estos son los requisitos y nuestra prueba de carga ahora también está completa, por lo que se ejecutó con éxito.

Entonces, eso cubre nuestra implementación de Azure.

Opciones de almacenamiento en caché distribuido para .NET

Algunas cosas que me gustaría mencionar en este punto que y hay un Redis comparación también.

opciones de almacenamiento en caché distribuido

Estamos hablando de Azure. Entonces, definitivamente hablaremos de Redis. Por lo tanto, está disponible en nuestro sitio web. NCache es 100% .NET. Está desarrollado en do sostenido. Es totalmente compatible con .NET y Java. En comparación, Redis detrás de escena está en Linux, no tienes control sobre el VMS. En NCache usted tiene control total sobre el VMS. puede ejecutar el código del lado del servidor en NCache así como la versión de Microsoft de una versión de Windows de Redis no es que sepas estable. Es la versión de Linux que se usa detrás de escena y luego se proporciona como un modelo de servicio. Y luego, NCache también se puede usar en Dockers. Si planeas usar NCache en los contenedores Dockers del lado del servidor, podría usar eso.

Y luego, también hablaré sobre algunos detalles con respecto a las opciones de implementación. solo instalas NCache porción del servidor, obtiene una versión de Azure de nuestra parte. Es una versión solo del servidor y luego necesita los paquetes NuGet para que sus aplicaciones estén equipadas con NCache y eso es algo que también puede obtener de nuestro equipo de soporte o ventas. Entonces, eso es algo que no está disponible públicamente. Eso es intencional, pero solo tiene que solicitarnos y luego le proporcionaremos el lanzamiento de Azure, así como los paquetes NuGet y, después de eso, es solo la pieza de red que necesita para configurar un solo sitio o configurar varios sitios. Por lo general, recomendamos un solo sitio y, en ese caso, necesita una comunicación de punto a sitio y, en varios sitios, necesita una comunicación de sitio a sitio.

Entonces, eso completa nuestra presentación.

¿Qué hacer a continuación?

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