Arquitectura: Optimiza las transferencias a gran escala de los eventos de estadísticas y registros

En este artículo, se describe una arquitectura para optimizar la transferencia de estadísticas a gran escala en Google Cloud. Aquí, “gran escala” significa más de 100,000 eventos por segundo o con un total de eventos agregados de tamaño de carga útil por encima de 100 MB por segundo.

Puedes usar los servicios administrados elásticos y escalables de Google Cloud para recopilar grandes cantidades de eventos de registro y estadísticas entrantes y, luego, procesarlos a fin de ingresar a un almacén de datos, como BigQuery.

Una arquitectura para la transferencia de cantidades significativas de datos de estadísticas debe tener en cuenta a qué datos necesitas acceder casi en tiempo real y cuáles se pueden manejar después de un retraso breve y dividirse de forma apropiada. Un enfoque segmentado tiene los siguientes beneficios:

  • Integridad de registro. Puedes ver los registros completos. No se pierde ningún registro por límites de cuota de transmisión ni por realizar muestras.
  • Reducción de costos. Las inserciones de transmisión de eventos y registros se facturan a una tarifa más alta que los que se insertan desde Cloud Storage mediante trabajos por lotes.
  • Recursos de consulta reservados. El movimiento de los registros de menor prioridad a la carga por lotes previene que impacten sobre los recursos de consulta reservados.

En el siguiente diagrama de arquitectura, se muestra ese sistema y se introducen los conceptos de rutas de acceso calientes y rutas de acceso frías para la transferencia:

rutas de acceso de transferencia general

Descripción general de la arquitectura

En esta arquitectura, los datos se originan desde dos fuentes posibles:

  • Los eventos de estadísticas se publican en un tema de Pub/Sub.
  • Los registros se recopilan mediante Cloud Logging.

Después de la transferencia desde algunas de las fuentes, según los requisitos de latencia del mensaje, los datos se ponen en la ruta de acceso caliente o en la ruta de acceso fría. La ruta de acceso caliente usa ingresos de transmisión, que pueden manejar un flujo de datos continuo, mientras que la ruta de acceso fría es un proceso por lotes que carga los datos a la hora que determines.

Eventos de registro

Puedes usar Cloud Logging para transferir los eventos de registro que generan las instalaciones de registro del sistema operativo estándar. Cloud Logging está disponible en varios entornos de Compute Engine de forma predeterminada, incluidas las imágenes estándar, y también se puede instalar en muchos sistemas operativos mediante el Agente de Cloud Logging. El agente de Logging es el receptor de registro predeterminado para App Engine y Google Kubernetes Engine.

Ruta de acceso caliente

registro de ruta de acceso caliente

En la rutas de acceso caliente, los registros críticos necesarios para supervisar y analizar tus servicios se seleccionan mediante la especificación de un filtro en el receptor de Cloud Logging y luego se transmiten a varias tablas de BigQuery. Usa tablas separadas para los niveles de registro de ERROR y WARN y, luego, haz una división por servicio si se esperan grandes volúmenes. Esta recomendación mantiene el número de inserciones por segundo por tabla debajo del límite de 100,000 y mantiene las consultas de estos datos en un buen funcionamiento.

Ruta de acceso fría

registro de ruta de acceso fría

En la ruta de acceso fría, los registros que no requieren un análisis casi en tiempo real se seleccionan mediante un receptor de Cloud Logging que apunta a un bucket de Cloud Storage. Los registros se agrupan por lotes y se escriben en archivos de registro en lotes por hora de Cloud Storage. Estos registros se pueden cargar por lotes en BigQuery mediante el proceso estándar de importación de archivos de Cloud Storage, que se puede iniciar con Google Cloud Console, la interfaz de línea de comandos (CLI) o incluso con una secuencia de comandos simple. La carga por lotes no afecta la transferencia de transmisión de la ruta de acceso caliente ni el rendimiento de la consulta. En la mayoría de los casos, es probable que sea mejor combinar los registros de rutas de acceso frías directamente en las mismas tablas usadas por los registros de rutas de acceso calientes a modo de simplificar la solución de problemas y la generación de informes.

Eventos de Analytics

Los eventos de Analytics pueden generarse mediante los servicios de tu app en Google Cloud o enviarse desde clientes remotos. La transferencia de estos eventos de estadísticas a través de Pub/Sub y su proceso posterior en Dataflow proporciona un sistema de alta capacidad de procesamiento con baja latencia. A pesar de que es posible enviar los eventos de estadísticas fríos y calientes a dos temas de Pub/Sub separados, tienes que enviar todos los eventos a un tema y procesarlos mediante trabajos de Dataflow con rutas de acceso calientes y frías por separado. De esa forma, puedes cambiar la ruta de acceso que sigue un evento de estadísticas si actualizas los trabajos de Dataflow. Esto es más sencillo que implementar una app nueva o la versión de cliente.

Ruta de acceso caliente

eventos de ruta de acceso caliente

Algunos eventos necesitan un análisis inmediato. Por ejemplo, un evento puede indicar un comportamiento no deseado del cliente o malos actores. Debes seleccionar de forma cuidadosa estos eventos de Pub/Sub mediante un trabajo de ajuste de escala automático de Dataflow y, luego, enviarlos directamente a BigQuery. El trabajo de Dataflow puede particionar estos datos para asegurar que no se alcance el límite de 100,000 filas por segundo por tabla. Esto también mantiene las consultas con un buen funcionamiento.

Ruta de acceso fría

eventos de ruta de acceso fría

Los eventos que se deben seguir y analizar en una base diaria o por hora, pero nunca de manera inmediata, se pueden enviar con Dataflow a objetos en Cloud Storage. Las cargas se pueden iniciar desde Cloud Storage a BigQuery mediante Cloud Console, las herramientas de línea de comandos de gcloud o incluso una simple secuencia de comandos. Puedes combinarlos en las mismas tablas que a los eventos de ruta de acceso caliente. Al igual que los registros de ruta de acceso frías, los eventos de estadísticas cargados por lotes no tienen impacto sobre los recursos de consulta reservados y mantienen la carga de la ruta de acceso de transferencia de transmisión razonable.

Para obtener más información sobre la carga de datos en BigQuery, consulta Introducción a la carga de datos.

¿Qué sigue?