Compartir vía


Optimización para alta simultaneidad con Azure Data Explorer

Las aplicaciones con alta simultaneidad son necesarias en escenarios con una base de usuarios de gran tamaño, en los que la aplicación administra simultáneamente muchas solicitudes con baja latencia y alto rendimiento.

Los casos de uso incluyen paneles de supervisión y alertas a gran escala. Entre los ejemplos se incluyen productos y servicios de Microsoft como Azure Monitor, Azure Time Series Insights y Playfab. Todos estos servicios usan Azure Data Explorer para atender las cargas de trabajo de alta simultaneidad. Azure Data Explorer es un servicio de análisis de macrodatos rápido y totalmente administrado para analizar en tiempo real grandes volúmenes de datos de que se transmiten desde aplicaciones, sitios web, dispositivos IoT, etc.

Nota

El número real de consultas que se pueden ejecutar simultáneamente en un clúster depende de factores como la SKU del clúster, los volúmenes de datos, la complejidad de las consultas y los patrones de uso.

Para configurarlo para el uso de aplicaciones de alta simultaneidad, diseñe la arquitectura de back-end de la siguiente manera:

En este artículo se presentan recomendaciones para cada uno de los temas anteriores que se pueden implementar para lograr una alta simultaneidad de manera óptima y rentable. Estas características se pueden utilizar por sí solas o en combinación.

Optimización de datos

Para la alta simultaneidad, las consultas deben consumir la menor cantidad posible de recursos de CPU. Puede usar cualquiera de los métodos siguientes o todos ellos:

Uso de los procedimientos recomendados de diseño de esquemas de tablas

Utilice las siguientes sugerencias de diseño de esquemas de tablas para minimizar los recursos de CPU utilizados:

  • Las columnas id. deben definirse como tipos de datos de cadena, independientemente de si los valores son numéricos. La indexación de columnas de cadena es más sofisticada que para las columnas numéricas y proporciona un mejor rendimiento de filtrado.
  • Haga coincidir el tipo de datos de las columnas de forma óptima con los datos almacenados en estas columnas. Por ejemplo, no almacene valores datetime en una columna de cadena.
  • Evite las grandes tablas dispersas con muchas columnas y use columnas dinámicas para almacenar propiedades dispersas.
  • Almacene las propiedades usadas con frecuencia en su propia columna con un tipo de datos no dinámico.
  • Desnormalice los datos para evitar combinaciones que exijan recursos de CPU relativamente grandes.

Partición de datos

Los datos se almacenan en forma de extensiones (particiones de datos) y se crean particiones según la hora de la ingesta de forma predeterminada. Puede usar la directiva de creación de particiones para volver a particionar las extensiones en función de una sola columna de cadena o una sola columna de fecha y hora en un proceso en segundo plano. La creación de particiones puede proporcionar mejoras significativas en el rendimiento cuando la mayoría de las consultas usan claves de partición para filtrar, agregar o ambas.

Nota

El propio proceso de creación de particiones utiliza recursos de CPU. Sin embargo, la reducción de la CPU en tiempo de consulta debe superar a la CPU usada para la creación de particiones.

Agregación previa de los datos con vistas materializadas

Agregue previamente los datos para reducir significativamente los recursos de CPU en tiempo de consulta. Los escenarios de ejemplo incluyen resumir puntos de datos en un número reducido de rangos de tiempo, mantener el registro más reciente de un registro determinado o desduplicar el conjunto de datos. Use vistas materializadas para obtener una vista agregada de las tablas de origen fácil de configurar. Esta característica simplifica el esfuerzo de crear y mantener estas vistas agregadas.

Nota

El proceso de agregación en segundo plano utiliza recursos de CPU. Sin embargo, la reducción del uso de CPU en tiempo de consulta debe superar a la CPU usada para la creación de particiones.

Configuración de la directiva de almacenamiento en caché

Configure la directiva de almacenamiento en caché para que las consultas se ejecuten en los datos almacenados en el almacenamiento de uso frecuente, también conocido como memoria caché de disco. Ejecute solo escenarios limitados y cuidadosamente diseñados en el almacenamiento de uso poco frecuente o en tablas externas.

Establecimiento de un patrón de arquitectura líder-seguidor

La base de datos del seguidor es una característica que sigue a una base de datos o a un conjunto de tablas de una base de datos de otro clúster ubicado en la misma región. Esta característica se expone mediante Azure Data Share, las API de Azure Resource Manager y un conjunto de comandos del clúster.

Use el patrón líder-seguidor para establecer los recursos de proceso de las diferentes cargas de trabajo. Por ejemplo, configure un clúster para la ingesta, un clúster para las consultas o el servicio a paneles o aplicaciones, y un clúster que atienda las cargas de trabajo de ciencia de datos. En este caso, cada carga de trabajo tendrá recursos de proceso dedicados que se pueden escalar de manera independiente y diferentes configuraciones de almacenamiento en caché y seguridad. Todos los clústeres usan los mismos datos, siendo el líder quien escribe los datos y los seguidores los usan en modo de solo lectura.

Nota

Las bases de datos del seguidor tienen un retraso con respecto al líder, normalmente algunos segundos. Si su solución requiere los datos más recientes sin latencia, esta solución podría ser útil. Use una vista en el clúster seguidor que una los datos del líder y el seguidor y consulte los datos más recientes desde el líder y el resto de los datos desde el seguidor.

Para mejorar el rendimiento de las consultas en el clúster seguidor, puede habilitar la configuración de extensiones de captura previa. Use esta configuración con cuidado, ya que podría afectar a la actualización de los datos en la base de datos del seguidor.

Optimización de consultas

Use los métodos siguientes para optimizar las consultas para una alta simultaneidad.

Siga los procedimientos recomendados para consultas para que las consultas sean lo más eficaces posible.

Uso de una memoria caché de resultados de consultas

Cuando más de un usuario carga el mismo panel en un momento similar, se puede proporcionar el panel al segundo y a los siguientes usuarios desde la memoria caché. Este configuración proporciona un alto rendimiento casi sin uso de CPU. Use la característica memoria caché de resultados de consultas y envíe la configuración de la memoria caché de resultados de consultas con la consulta mediante la instrucción set.

Grafana contiene un valor de configuración para la memoria caché de resultados de consultas en el nivel de origen de datos, por lo que todos los paneles usan esta configuración de forma predeterminada y no es necesario modificar la consulta.

Configuración de la coherencia de las consultas

El modo de coherencia de consultas predeterminado es seguro. En este modo, un nodo de administración administra los metadatos y la ingesta del clúster, así como el planeamiento de consultas y la delegación de la ejecución en otros nodos.

En las aplicaciones de alta simultaneidad, la administración de consultas puede hacer que el uso de CPU del nodo de administración sea alto, mientras que otros nodos están menos ocupados. Esto puede provocar un cuello de botella por el cual el número de consultas simultáneas no puede crecer. Sin embargo, esto puede no ser evidente en el informe de CPU del clúster (Azure Portal > {su_clúster} > Métricas > Métrica de CPU) que muestra el uso medio de CPU del clúster.

En este escenario, se recomienda usar el modo de coherencia débil. En este modo, hay más nodos que pueden administrar las consultas, lo que permite escalar horizontalmente el número de consultas simultáneas. Los nodos de este modo actualizan periódicamente su copia de los metadatos y los datos recién ingeridos, lo que conduce a una latencia de menos de un minuto a medida que se sincronizan los datos. Sin embargo, esta latencia corta es preferible a la situación de cuello de botella que puede surgir al usar el modo de coherencia seguro.

Puede establecer el modo de coherencia en una directiva de coherencia de consulta de grupo de cargas de trabajo, en las propiedades de la solicitud de cliente o en la configuración del origen de datos de Grafana.

Establecimiento de las directivas del clúster

El número de solicitudes simultáneas se limita de forma predeterminada y se controla mediante la directiva de límite de velocidad de las solicitudes para que el clúster no se sobrecargue. Puede ajustar esta directiva para situaciones de alta simultaneidad. Esta directiva solo se debe ajustar después de realizar pruebas rigurosas, preferiblemente con patrones de uso y conjuntos de datos similares a los de producción. Las pruebas garantiza que el clúster puede admitir el valor modificado. Este límite se puede configurar en función de las necesidades de la aplicación.

Supervisión de clústeres de Azure Data Explorer

La supervisión del estado de los recursos del clúster le ayuda a crear un plan de optimización mediante las características sugeridas en las secciones anteriores. Azure Monitor para Azure Data Explorer proporciona una vista completa del rendimiento, las operaciones, el uso y los errores del clúster. Para más información sobre el rendimiento de las consultas, las consultas simultáneas, las consultas limitadas y otras métricas, seleccione la pestaña Insights (versión preliminar) en la sección de supervisión del clúster de Azure Data Explorer en Azure Portal.

Para más información sobre los clústeres de supervisión, consulte Azure Monitor para Azure Data Explorer. Para obtener información sobre métricas individuales, consulte Métricas de Azure Data Explorer.