Se agregan 320 TB de datos diariamente. Después de migrar de ClickHouse a ByConity, ¡el rendimiento de la consulta es muy estable!

Introducción a los antecedentes

ByConity es adecuado para una variedad de escenarios comerciales y tiene muy buen rendimiento en acceso a datos en tiempo real, consultas de agregación de tablas grandes y amplias, análisis y cálculos complejos con datos masivos y consultas de correlación de tablas múltiples. Utilicemos un escenario empresarial real para presentar este sistema de análisis de comportamiento. Este sistema de análisis de comportamiento se basa en una plataforma de análisis de comportamiento de usuario multidimensional y proporciona múltiples métodos y escenarios de análisis, como análisis de eventos, análisis de retención, análisis de conversión, agrupación de usuarios y. retención de usuarios. Este artículo presentará los problemas y desafíos que enfrenta esta plataforma multidimensional de análisis del comportamiento del usuario cuando usa el clúster ClickHouse original, y cómo resolver estos problemas y brindar beneficios a la empresa después de migrar ByConity.
Figura 1 Diseño de la arquitectura del sistema de análisis de comportamiento
 

problemas y desafíos

En los primeros días, este sistema se implementó en el clúster ClickHouse. Por un lado, debido al rápido desarrollo del negocio, la cantidad de datos aumentaba día a día. El máximo de datos nuevos diarios superó los 320 TB, la cantidad diaria. las nuevas filas superaron los 2,3 billones y las dimensiones de datos del usuario superaron los 20.000. Por otro lado, las necesidades de consulta de los usuarios son más flexibles y diversas, y deben admitir consultas detalladas, consultas agregadas y consultas de análisis interactivo. y proporcionar resultados de respuesta rápida. Además, a medida que la cantidad de datos continúa aumentando (crecimiento anual del 35%), no solo debemos poder soportar los desafíos que plantea un aumento de datos tan grande, sino también controlar la tasa de crecimiento de costos dentro de un cierto rango.
Pero nos resulta difícil hacer esto en el clúster ClickHouse existente. La razón es que ClickHouse se basa en una arquitectura Shared-Nothing. Cada nodo es independiente y no comparte recursos de almacenamiento. Por lo tanto, los recursos informáticos y los recursos de almacenamiento están estrechamente acoplados, lo que provocará los siguientes problemas:
  • El costo de escalar hacia arriba y hacia abajo se vuelve más alto e implica migración de datos, lo que nos impide escalar hacia arriba y hacia abajo en tiempo real según sea necesario, lo que también conduce a un desperdicio de recursos y costos incontrolables.
  • La arquitectura estrechamente acoplada hará que varios inquilinos interactúen entre sí en un entorno de clúster compartido, lo que hará que las consultas de los usuarios se afecten entre sí.
  • Dado que la lectura y escritura de los nodos del clúster se completan en el mismo nodo, la lectura y la escritura se afectan entre sí.
  • El soporte de rendimiento para consultas complejas, como operaciones de unión de varias tablas, no es muy bueno y no puede satisfacer las diversas necesidades de consulta de los usuarios.
 

Selección de tecnología

Por ello, a principios de 2022, la empresa comenzó a utilizar ByConity con una arquitectura de separación de computación y almacenamiento como motor OLAP principal. ByConity es un almacén de datos nativo de la nube de código abierto que adopta una arquitectura de separación de almacenamiento informático y admite múltiples funciones clave, como separación de almacenamiento informático, expansión y contracción elástica, aislamiento de recursos multiinquilino y una sólida coherencia en la lectura y escritura de datos. . Al utilizar optimizaciones del motor OLAP convencional, como almacenamiento de columnas, ejecución vectorizada, ejecución MPP, optimización de consultas, etc., ByConity puede proporcionar un excelente rendimiento de lectura y escritura.
Figura 2 Diagrama de arquitectura técnica de tres capas de ByConity
 
ByConity es una actualización basada en la arquitectura ClickHouse de código abierto. Introduce una arquitectura que separa la informática y el almacenamiento. Transforma la arquitectura original en la que la informática y el almacenamiento se gestionan localmente en cada nodo en una gestión unificada de todas las tareas en todo el clúster. almacenamiento distribuido La arquitectura de datos hace que cada nodo informático sea un nodo informático puro sin estado y utiliza las capacidades de expansión del almacenamiento distribuido y las características sin estado de los nodos informáticos para lograr una expansión y contracción dinámicas. Es precisamente gracias a esta mejora que ByConity cuenta con las siguientes características importantes:
  • Aislamiento de recursos : aísle los recursos de diferentes inquilinos para que los inquilinos no se vean afectados entre sí.
  • Separación de lectura y escritura : los recursos informáticos y los recursos de almacenamiento están desacoplados para garantizar que las operaciones de lectura y escritura no se afecten entre sí.
  • Expansión y contracción elástica : admite la expansión y contracción elástica y puede expandir y contraer recursos informáticos en tiempo real y bajo demanda para garantizar una utilización eficiente de los recursos.
  • Fuerte coherencia de los datos : la fuerte coherencia en la lectura y escritura de datos garantiza que los datos estén siempre actualizados y que no haya inconsistencia entre la lectura y la escritura.
  • Alto rendimiento : adopta la optimización del motor OLAP convencional, como almacenamiento de columnas, ejecución vectorizada, ejecución MPP, optimización de consultas, etc. para proporcionar un excelente rendimiento de lectura y escritura.
 

ingresos del negocio

Después de presentar ByConity, el rendimiento general puede alcanzar el 91% y todas las consultas de los usuarios se pueden completar en 10 segundos. A través de la investigación de comentarios de los usuarios, este indicador de rendimiento también se encuentra dentro del rango aceptable de los usuarios. A continuación se muestra un resumen de los beneficios generales y la experiencia aportada por nuestra migración a ByConity:
 
  • Evite la apropiación de recursos y asegúrese de que el rendimiento de las consultas sea 100 % estable :
En el clúster de ClickHouse original, a menudo nos encontramos con el problema de la aglomeración de recursos. Dado que ClickHouse no logró el aislamiento de recursos ni de inquilinos, cuando varios usuarios compartían el clúster para realizar consultas, cuando un usuario consultaba recursos, la sobrecarga sería muy alta, lo que provocaría un problema. involucrar La preferencia de recursos hace que todas las consultas de usuarios compartidos en este clúster sean inestables y no se pueda satisfacer la calidad del servicio. Sin embargo, después de migrar a ByConity, dado que el grupo informático está completamente aislado físicamente, se puede lograr el aislamiento de recursos naturales y el aislamiento de inquilinos. Las consultas de diferentes usuarios no se ven afectadas entre sí. El rendimiento general de las consultas puede alcanzar el 91%. se puede completar en 10 segundos. Además, ByConity proporciona enlaces de consultas complejos de desarrollo propio, caché de disco de desarrollo propio para reducir la lectura de datos en frío e índices de matrices de uso frecuente. Además, la eficiencia de lectura en caliente también es mejor que la del clúster ClickHouse original. Clúster ClickHouse, ByConity La pérdida de rendimiento en el clúster está dentro del 10%.
 
  • Bajos costos de operación y mantenimiento y los nodos defectuosos se pueden reemplazar en segundos :
Originalmente, en el clúster de Clickhouse, si se descubre que un nodo del clúster está roto, es necesario desconectar toda la máquina para repararla. Esto se debe a que los recursos informáticos, los recursos de almacenamiento y la información de metadatos de ClickHouse están todos en este nodo. Es equivalente a un clúster pequeño. Se pierde un recurso informático y se pierde una copia de almacenamiento. Antes de reemplazar un nuevo nodo, es necesario hacer una copia de seguridad del disco local del nodo roto y migrarlo al nuevo nodo. alto y la coherencia de los datos es difícil de garantizar. Para ByConity, si el grupo informático está roto, dado que el grupo informático no almacena datos y solo contiene nodos informáticos sin estado, solo es necesario reemplazarlo con un nuevo grupo informático. HDFS proporciona la confiabilidad y coherencia de los datos. Asegúrese de que la pérdida de la caché de datos de lectura en caliente local sea controlable en el rendimiento de las consultas comerciales; esta parte se beneficia principalmente de la arquitectura de separación informática y de almacenamiento de ByConity.
 
  • Expansión y contracción sin sensores , ahorrando costos de recursos:
ByConity puede lograr una expansión y contracción fluidas. Es una implementación modular y en contenedores basada en la escalabilidad elástica de Kubernetes. Si hay suficientes máquinas, se puede expandir indefinidamente, si el servidor falla. Hay que preocuparse porque el nodo de ByConity es solo un nodo informático sin estado y eliminarlo directamente tendrá poco impacto en todo el clúster. Además, la programación adaptativa se utiliza para evitar nodos lentos, mejorar las capacidades de rendimiento y mejorar la utilización de recursos de los nodos. Al mismo tiempo, la tasa de compresión de ByConity es extremadamente alta. Tomando como ejemplo una de sus empresas, se agregan 460 TB de datos cada día, alcanzando los 100 TB después de la compresión, con una tasa de compresión del 65%. ZSTD y otros métodos de compresión, que consumen más almacenamiento en casos extremos Menos que el parquet.
 
  • La coherencia de los datos está fuertemente garantizada y la complejidad del mantenimiento es cercana a cero :
Después de migrar a ByConity, resolvimos completamente el problema de coherencia de los datos, porque ByConity no tiene un problema de sincronización maestro-esclavo local y el problema de coherencia de los datos se resuelve directamente mediante el almacenamiento de objetos subyacente, como HDFS/S3, etc. De esta manera, la complejidad del mantenimiento de la coherencia se reduce considerablemente y la probabilidad de error también es menor. Actualmente, pocos usuarios informan problemas de coherencia de los datos. Pero esto se encontraba a menudo antes, porque el clúster de ClickHouse se mantiene mediante múltiples copias a través de la comunicación entre nodos y los problemas de coherencia se mantienen a través de colas de coherencia. La implementación también es muy complicada y propensa a errores. Además, ByConity puede acceder directamente a archivos de datos a través de HDFS. Diferentes motores informáticos se adaptan a diferentes conectores para leer datos y tienen capacidades universales.
 

perspectiva del futuro

Después de un año y medio de exploración práctica, ByConity se ha convertido en el principal motor OLAP utilizado internamente. Más adelante se trasladará una gran cantidad de usuarios y datos, y eventualmente reemplazará el clúster ClickHouse original. Se puede ver que ByConity, como motor OLAP con computación y almacenamiento separados, tiene las ventajas de alto rendimiento, alta escalabilidad y alta estabilidad, y puede satisfacer las necesidades de procesamiento y análisis de datos a gran escala. Al mismo tiempo, a través de la comunicación en la comunidad y la discusión sobre la hoja de ruta publicada por la comunidad https://github.com/ByConity/ByConity/issues/26, ByConity se centrará principalmente en las siguientes direcciones en el futuro:
  1. Admite ejecución en varias etapas, capacidades ETL, etc. de la capa de ejecución
  2. Admite consultas federadas de lagos de datos como Hudi, Iceberg, etc.
La comunidad ByConity tiene una gran cantidad de usuarios y es una comunidad muy abierta. Invitamos a todos a discutir la construcción conjunta con nosotros en Github. También puede unirse a nuestro grupo WeChat, grupo Feishu o Discord para participar en la comunicación.
 
GitHub: https://github.com/ByConity/ByConity
¡Compañero pollo deepin-IDE de "código abierto" y finalmente logró el arranque! Buen chico, Tencent realmente ha convertido Switch en una "máquina de aprendizaje pensante" Revisión de fallas de Tencent Cloud del 8 de abril y explicación de la situación Reconstrucción de inicio de escritorio remoto de RustDesk Cliente web Base de datos de terminal de código abierto WeChat basada en SQLite WCDB marcó el comienzo de una actualización importante Lista de abril de TIOBE: PHP cayó a un mínimo histórico, Fabrice Bellard, el padre de FFmpeg, lanzó la herramienta de compresión de audio TSAC , Google lanzó un modelo de código grande, CodeGemma , ¿te va a matar? Es tan bueno que es de código abierto: herramienta de edición de carteles e imágenes de código abierto
{{o.nombre}}
{{m.nombre}}

Supongo que te gusta

Origin my.oschina.net/u/6210722/blog/10089963
Recomendado
Clasificación