Saltar al contenido

Optimizar el rendimiento de almacenamiento

03/09/2020

Optimizar el rendimiento de almacenamiento😊👍😁En esta unidad, obtendrá información sobre optimizar COMPARTELO Y LIKE

AZURE

Optimizar el rendimiento de almacenamiento

  • 9 minutos

Es importante incluir consideraciones de rendimiento de almacenamiento en la arquitectura. Al igual que sucede con la latencia de red, un rendimiento deficiente en el nivel de almacenamiento puede afectar a la experiencia del usuario. ¿Cómo se podría optimizar el almacenamiento de datos? ¿Qué se necesita tener en cuenta para asegurarse de que no está incorporando cuellos de botella de almacenamiento en la arquitectura?

En esta unidad, obtendrá información sobre optimizar el rendimiento de almacenamiento de la arquitectura.

Optimización del rendimiento de almacenamiento de máquina virtual

En primer lugar, veamos cómo optimizar el almacenamiento de las máquinas virtuales (VM). El almacenamiento en disco desempeña un rol fundamental en el rendimiento de las máquinas virtuales. La selección del tipo de disco adecuado para la aplicación es una decisión importante.

Las distintas aplicaciones tienen requisitos de almacenamiento diferentes. La aplicación podría ser sensible a la latencia de lecturas y escrituras de disco. También podría requerir la capacidad de controlar un gran número de operaciones de entrada/salida por segundo (IOPS) o de mayor rendimiento de disco global.

Al compilar una carga de trabajo de infraestructura como servicio (IaaS), ¿qué tipo de disco se debería usar? Hay cuatro opciones:

  • Almacenamiento SSD local: cada máquina virtual tiene un disco temporal respaldado con almacenamiento SSD local. El tamaño de este disco varía según el tamaño de la máquina virtual. Dado que esta SSD es local para la máquina virtual, el rendimiento es alto. Sin embargo, los datos podrían perderse durante un evento de mantenimiento o una reimplementación de la máquina virtual. Este disco solo es adecuado para el almacenamiento temporal de datos que no se necesiten permanentemente. Por ejemplo, este disco es excelente para el archivo de intercambio o de agnación de la máquina virtual y para otros aspectos, como tempdb en Azure SQL Server. No se aplica ningún cargo por este almacenamiento. Está incluido en el costo de la máquina virtual.
  • Almacenamiento HDD estándar: este es el tipo de almacenamiento en disco del eje. Podría ser adecuado cuando la aplicación no esté enlazada por una latencia incoherente o por niveles inferiores de rendimiento. Un excelente caso de uso para este tipo de disco es una carga de trabajo de desarrollo/pruebas en la que no se requiera rendimiento garantizado.
  • Almacenamiento SSD estándar: este almacenamiento respaldado por SSD tiene la latencia baja de una SSD, pero con niveles inferiores de rendimiento. Un servidor web que no sea de producción es un buen caso de uso para este tipo de disco.
  • Almacenamiento SSD Premium: este almacenamiento respaldado por SSD es ideal para las cargas de trabajo que van a producción, requieren la mayor fiabilidad y demandan una latencia baja coherente o necesitan niveles altos de rendimiento e IOPS. Dado que estos discos tienen mayores capacidades de fiabilidad y rendimiento, se recomiendan para todas las cargas de trabajo de producción.

El almacenamiento Premium solo se puede asociar a tamaños específicos de máquina virtual. Los tamaños compatibles con el almacenamiento Premium se designan con una “s” en el nombre. Por ejemplo, D2s_v3 o Standard_F2s_v2. Cualquier tipo de máquina virtual (con o sin una “s” en el nombre) puede asociarse a almacenamiento estándar HDD o unidades SSD.

Los discos se pueden seccionar mediante una tecnología de seccionamiento como Espacios de almacenamiento en Windows o mdadm en Linux. El seccionamiento aumenta el rendimie

4nto y las IOPS al distribuir la actividad de disco en varios discos. Se puede usar el seccionamiento de discos para insertar los límites de rendimiento de los discos. El seccionamiento se suele observar en sistemas de base de datos de alto rendimiento y en otros sistemas que tienen requisitos intensivos de almacenamiento.

Cuando se basa en las cargas de trabajo de máquina virtual, debe evaluar los requisitos de rendimiento de la aplicación para determinar el almacenamiento subyacente que aprovisionará para las máquinas virtuales.

Optimización del rendimiento de almacenamiento para la aplicación

Acaba de obtener información sobre cómo puede usar diferentes tipos de tecnologías de almacenamiento para mejorar el rendimiento del disco sin procesar. También puede tratar el rendimiento del acceso a los datos en el nivel de aplicación. Veamos algunas maneras de hacerlo.

Almacenamiento en caché

Un enfoque común para mejorar el rendimiento de la aplicación es integrar una capa de almacenamiento en caché entre su aplicación y el almacén de datos.

Normalmente, una caché almacena datos en memoria y permite su recuperación rápida. Puede tratarse de datos de acceso frecuente, datos especificados a partir de una base de datos o datos temporales, como el estado del usuario. Se tiene control sobre el tipo de datos almacenados, la frecuencia con la que se actualizan y cuándo expiran. Al colocar esta caché en la misma región que la aplicación y la base de datos, se reduce la latencia general entre ambas. El proceso de extraer datos de la caché casi siempre es más rápido que recuperaros de una base de datos. Mediante el uso de una capa de almacenamiento en caché, puede mejorar considerablemente el rendimiento general de la aplicación.

En la ilustración siguiente se muestra cómo una aplicación recupera datos de una base de datos, los almacena en una memoria caché y usa el valor almacenado en caché según sea necesario.

Ilustración en la que se muestra que recuperar datos de una memoria caché es más rápido que recuperarlos de una base de datos.

Azure Cache for Redis es un servicio de almacenamiento en caché en Azure que almacena datos en la memoria. Se basa en la caché Redis de código abierto y es una oferta de servicio totalmente administrada por Microsoft. Se selecciona el nivel de rendimiento que requiere y se configura la aplicación para usar el servicio.

Persistencia políglota

La persistencia políglota es el uso de diferentes tecnologías de almacenamiento de datos para controlar los requisitos de almacenamiento.

Considere el ejemplo siguiente de comercio electrónico. Suponga que almacena los activos de las aplicaciones en un almacén de blobs, las reseñas de productos y recomendaciones en un almacén NoSQL y los datos de perfil de usuario o cuenta en una base de datos SQL. En la ilustración siguiente se muestra cómo una aplicación puede usar varias técnicas de almacenamiento de datos para almacenar distintos tipos de datos.

Ilustración en la que se muestra el uso de distintos métodos de almacenamiento de datos dentro de la misma aplicación para aumentar el rendimiento y reducir los costos.

Es importante saber que los distintos almacenes de datos están diseñados para determinados casos de uso o pueden ser más accesibles debido a los costos. Por ejemplo, el almacenamiento de blobs en una base de datos de SQL podría ser costoso e implicar un acceso más lento que si se hace directamente desde un almacén de blobs.

Mantener la coherencia de los datos en los almacenes de datos distribuidos puede ser un desafío importante. El problema es que las estrategias, tales como la materialización y el bloqueo, solo funcionan bien si todas las instancias de aplicaciones comparten el mismo almacén de datos, y si la aplicación está diseñada para garantizar que los bloqueos tengan una duración corta. Pero si se crean particiones de los datos o si se replican en diferentes almacenes de datos, el proceso de bloquear y serial izar el acceso a los datos para mantener la coherencia puede convertirse en una sobrecarga costosa que afecta al rendimiento, al tiempo de respuesta y a la esca labilidad de un sistema. Como consecuencia, la mayoría de aplicaciones distribuidas modernas no bloquean los datos que modifican. Adoptan un enfoque más flexible para la coherencia, lo que se conoce como coherencia final.

La coherencia final significa que los almacenes de datos de réplica al final convergen si no hay escrituras adicionales. Si se realiza una operación de escritura en uno de los almacenes de datos, las lecturas desde otro pueden proporcionar datos ligeramente obsoletos. La coherencia final permite una escala mayor porque hay una baja latencia para operaciones de lectura y escritura, en lugar de esperar para comprobar si la información es coherente en todos los almacenes.