Motor de almacén de datos nativo en la nube de código abierto ByConity arquitectura de separación de almacenamiento y computación y ventajas

Contribución | Equipo técnico de ByConity

Producido | Computación en la nube CSDN

ByConity es un motor de almacén de datos nativo de la nube de código abierto de ByteDance. Una de sus ventajas importantes es que adopta una arquitectura separada de computación y almacenamiento, que realiza la separación de lectura y escritura y la expansión y contracción elástica . Esta arquitectura garantiza que las operaciones de lectura y escritura no interfieran entre sí, desvinculando los recursos informáticos y los recursos de almacenamiento. Los dos pueden ampliarse o reducirse de forma independiente bajo demanda, lo que garantiza un uso eficiente de los recursos y una gran coherencia en la lectura y escritura de datos. Además, ByConity admite el aislamiento de recursos de múltiples inquilinos para garantizar que los diferentes inquilinos no se afecten entre sí, lo que es más adecuado para entornos de múltiples inquilinos Al mismo tiempo, ByConity adopta la optimización del motor OLAP convencional para proporcionar un mejor rendimiento de lectura y escritura.

1. Antecedentes técnicos de ByConity

ClickHouse es un sistema de gestión de bases de datos en columnas de código abierto, que adopta la arquitectura Shared-Nothing, que tiene las siguientes características típicas:

  • Cada nodo gestiona de forma independiente una parte de los datos

  • No se comparten datos entre nodos

  • El almacenamiento y la informática están estrechamente relacionados

La ejecución de su consulta se divide aproximadamente en dos fases. La primera etapa es que cada nodo procesa de forma independiente los fragmentos de datos que maneja, responsable de I/O, consulta y cálculo. En la segunda etapa, el nodo Coordinador resume los resultados calculados por cada nodo en la primera etapa de forma predeterminada y luego se los devuelve al cliente. Esta arquitectura puede lograr un alto rendimiento y escalabilidad, y es especialmente adecuada para consultas de alta simultaneidad con una escala comercial fija. Al mismo tiempo, debido a que no se comparten datos entre nodos, la escalabilidad es relativamente fácil de lograr y se puede lograr una expansión lineal.

Figura 1  Arquitectura Clickhouse

Pero en el uso real, encontramos los siguientes problemas:

  • Los costos de expansión y reducción son altos : para las empresas de rápido crecimiento, se requieren operaciones de expansión frecuentes, y la reorganización y la reubicación de datos afectarán las operaciones reales de lectura y escritura.

  • Los múltiples inquilinos pueden afectarse entre sí : diferentes empresas pueden tener diferentes características comerciales, lo que hace que algunas empresas ocupen el grupo de recursos de todo el clúster en un momento específico, lo que afecta a otros inquilinos.

  • Las operaciones de lectura y escritura se ven afectadas : cada nodo debe ser responsable de una parte de las tareas de lectura y escritura, cuando el uso de recursos del nodo es alto, el rendimiento de la consulta puede verse afectado

  • El uso de recursos será un desperdicio : especialmente cuando varias pequeñas y medianas empresas comparten el mismo clúster, puede haber una estimación de recursos insuficiente u otras situaciones que conducen al desperdicio de recursos.

2. Introducción a la Arquitectura ByConity

Con base en los problemas encontrados en el proceso de uso anterior, actualizamos la arquitectura ClickHouse de código abierto, introdujimos una arquitectura de separación de computación y almacenamiento, y convertimos la arquitectura de computación y almacenamiento original que se administra localmente en cada nodo a almacenamiento distribuido. la gestión unificada de todos los datos en todo el clúster hace que cada nodo informático sea un nodo informático puro sin estado y utiliza la escalabilidad del almacenamiento distribuido y las características sin estado de los nodos informáticos para lograr una expansión y contracción dinámicas. Además, la arquitectura también admite el aislamiento de múltiples inquilinos y la separación de tareas de lectura y escritura. Se obtienen las siguientes ventajas:

  • Alta elasticidad y alta escalabilidad : expansión y contracción independientes de la informática y el almacenamiento

  • Aislamiento de múltiples inquilinos : diferentes inquilinos usan diferentes grupos informáticos

  • Separación de lectura y escritura : la lectura y la escritura utilizan diferentes recursos informáticos

Arquitectura de separación informática de almacenamiento

En términos de arquitectura general, la arquitectura de separación informática y de almacenamiento de ByConity se muestra en la Figura 3, que se divide principalmente en tres capas: capa de servicio compartido, capa informática y capa de almacenamiento en la nube.

  • Capa de servicios compartidos: el componente principal es el servicio en la nube, que es el punto de entrada para todas las consultas. Analiza y optimiza las consultas, genera planes de consulta y los envía a la capa informática para su procesamiento. También es equivalente al papel de un coordinador, responsable de la gestión de algunos servicios, componentes y transacciones, y también incluye la gestión de metadatos - Metadata Storage.

  • Capa informática: principalmente grupo de recursos informáticos - Almacén virtual (denominado VW), los componentes de recursos informáticos se pueden iniciar y detener dinámicamente, incluido un VW de lectura y un VW de escritura. En Read VW, cada nodo Worker tiene un módulo Optimizer y Runtime, y un módulo Disk Cache para almacenar en caché algunos datos para reducir el acceso a sistemas remotos de almacenamiento distribuido, y los datos calientes se almacenan en el módulo Disk Cache. En Writer VW, los datos se escribirán en el disco local en el formato ClickHouse: disco local primero y luego se escribirán en el almacenamiento distribuido en lotes para mejorar el rendimiento de escritura.

  • Capa de almacenamiento en la nube: Es un sistema de almacenamiento distribuido y unificado. Todos los datos de ByConity se almacenan en esta capa. Al consultar en la capa informática, los datos se leerán desde la capa de almacenamiento en la nube. La implementación específica de la capa de almacenamiento en la nube puede utilizar varios servicios de almacenamiento en la nube, como HDFS, S3, etc.

Además, ByConity también incluye algunos componentes de servicios compartidos, como TSO, Daemon Manager, Resource Manager, tareas en segundo plano y componentes de descubrimiento de servicios.

Figura 2  Arquitectura de separación informática de almacenamiento de ByConity

3. Ventajas de la arquitectura ByConity

aislamiento de recursos

En escenarios de big data, el aislamiento de recursos es muy importante, ya que puede mejorar la utilización, el rendimiento, la seguridad, la confiabilidad y la flexibilidad de los recursos del sistema, y ​​ayudar a las empresas a resolver muchos puntos débiles del negocio, como:

  • Evite conflictos de recursos entre diferentes inquilinos, mejore la seguridad de los datos y la experiencia del inquilino;

  • Asigne diferentes recursos de acuerdo con diferentes escenarios comerciales para mejorar la utilización y el rendimiento de los recursos;

  • Mejore la seguridad de los datos y limite el acceso aislando diferentes tareas de procesamiento de datos o instancias de bases de datos

  • Realice una expansión y contracción flexibles, y ajuste dinámicamente la asignación de recursos de acuerdo con los diferentes requisitos comerciales y de volumen de datos;

  • Mejore la confiabilidad y estabilidad del sistema, aísle las fallas y evite afectar todo el sistema.

Sin embargo, ClickHouse no tiene un diseño especial para el aislamiento de recursos, sino que logra cierta separación de lectura y escritura a través de la configuración de clúster y replicación, la estrategia de equilibrio de carga y la escritura en tablas locales específicas. Para la separación en caliente y en frío, ClickHouse implementa mediante la configuración de políticas de almacenamiento y el uso de tecnologías como TTL, TO DISK y TO VOLUME.

ByConity logra bien el aislamiento de recursos a través del diseño de arquitectura de almacenamiento y separación informática. Introduce el concepto de grupo informático (Almacén virtual: VW). El Almacén virtual es una organización virtual de recursos informáticos, que puede dividir los recursos informáticos en múltiples clústeres virtuales que proporcionan aislamiento de recursos entre diferentes inquilinos. Al mismo tiempo, después de unificar el almacenamiento asociado originalmente con los recursos informáticos en la gestión del almacenamiento distribuido, los recursos informáticos y los recursos de almacenamiento están completamente desacoplados y sin estado, por lo que los nodos informáticos son los principales responsables de las tareas informáticas, que pueden ser la escritura de datos, la consulta del usuario o algunas tareas de fondo. Por lo tanto, ByConity implementa el aislamiento de recursos de varios niveles a través de la implementación y el uso de Virtual Warehouse:

Figura 3  Grupo de computación ByConity

  • Aislamiento de inquilinos: el Almacén virtual de ByConity no tiene estado y se puede crear a pedido de acuerdo con diferentes negocios y escenarios, y cada Almacén virtual es un recurso exclusivo del sistema, por lo que es fácil lograr el aislamiento de múltiples inquilinos. Por supuesto, con el fin de mejorar la utilización de los recursos, ByConity también admite el arrendamiento de recursos entre almacenes virtuales para lograr el intercambio de recursos.

  • Aislamiento de recursos informáticos: el almacén virtual permite el aislamiento físico de los recursos informáticos y cada almacén virtual puede contener varios trabajadores, que se pueden crear de forma flexible.

separación de lectura y escritura

Además del aislamiento de recursos, también esperamos lograr la separación de lectura y escritura.La separación de lectura y escritura consiste en procesar operaciones de lectura y operaciones de escritura por separado. Debido a que en el negocio real, las operaciones de lectura y escritura tienen diferentes requisitos en cuanto a recursos de hardware y tiempo, por lo que esperamos utilizar diferentes recursos de hardware para realizar operaciones de lectura y escritura, a fin de evitar la influencia mutua entre las operaciones de lectura y escritura y afectar el rendimiento del sistema. Y desperdiciar recursos, los beneficios específicos son los siguientes:

  • Reduzca los costos de almacenamiento: dirija las operaciones de lectura y escritura a diferentes nodos de almacenamiento para evitar duplicaciones y redundancias innecesarias de datos.

  • Mejore la eficiencia de las consultas: guíe las operaciones de lectura a nodos de lectura dedicados para reducir el tiempo de espera de las consultas, mejorando así la eficiencia del procesamiento de datos y la experiencia del usuario.

  • Reduzca los costos de la red: guíe las operaciones de lectura para leer los nodos más cerca de los usuarios, reduciendo la distancia de transmisión de datos y los costos de la red.

  • Mejore la disponibilidad del sistema: dirija las operaciones de lectura y escritura a diferentes nodos. Cuando un nodo falla, solo afectará las operaciones de lectura o escritura en el nodo, y no afectará la disponibilidad de todo el sistema.

ByConity puede lograr la separación de lectura y escritura a través del Almacén virtual.Los usuarios pueden especificar qué Almacén virtual usar para las operaciones de lectura y escritura, y el sistema enviará automáticamente diferentes solicitudes de lectura y escritura. Por ejemplo, la operación Insertar usa un grupo de cómputo dedicado a la escritura y la operación Seleccionar usa un grupo de cómputo dedicado a la lectura. Los trabajos de lectura y escritura no se afectarán entre sí. Sin embargo, dado que ByConity usa un almacenamiento distribuido unificado, inevitablemente habrá problemas de rendimiento.Aquí, ByConity usa un caché local (Local Cache) para resolverlo.

caché local

Para la gestión de caché local de gran capacidad, ByConity utiliza el algoritmo Bucket-LRU, que está optimizado sobre la base del algoritmo LRU. Divide los bloques de datos en el caché en múltiples depósitos, y cada depósito almacena una cierta cantidad de bloques de datos. y use el algoritmo LRU para eliminar cada depósito. De esta forma, los bloques de datos en la memoria caché se pueden dispersar en varios cubos, lo que reduce la frecuencia de eliminación de la memoria caché y también reduce la sobrecarga del algoritmo LRU. Incluso cuando la topología de la red cambia debido a la expansión y contracción del grupo informático, este mecanismo se sigue utilizando para evitar la reorganización de datos.

Figura 4  Segmento de fuerza de caché de ByConity

  • Para la granularidad de la caché, ByConity introduce el concepto de Segmento, como se muestra en la Figura 4, que es una granularidad de caché entre la unidad de archivo y la unidad de bloque comprimido, el tamaño es configurable y adecuado para el almacenamiento de archivos. El segmento se compone de varias marcas y cada marca contiene varios bloques comprimidos. Cuando una consulta necesita leer un segmento, primero puede verificar si el segmento existe en el caché y, si existe, leer los datos directamente desde el caché; de lo contrario, necesita leer los datos del disco. En el uso real, es necesario seleccionar una estrategia de almacenamiento en caché adecuada de acuerdo con las características y los requisitos de los datos, y optimizarla y ajustarla para lograr el mejor rendimiento y efecto. Las estrategias de almacenamiento en caché de ByConity son las siguientes:

  • De acuerdo con la frecuencia de acceso del segmento: de acuerdo con la frecuencia de acceso a los datos, determine qué datos son datos activos y colóquelos en caché.    

  • De acuerdo con el rango de acceso del segmento: aunque no se accede con frecuencia a algunos datos, pero su rango de consulta es grande, también debe almacenarse en caché.

  • Determine los datos calientes en función del tiempo de actualización de los datos: para escenarios como tablas en tiempo real, los datos nuevos suelen ser datos calientes y deben almacenarse en caché.

  • Optimice la estrategia de almacenamiento en caché en función de la información estadística (en desarrollo): determine qué datos son datos calientes y deben almacenarse en caché en función de la información estadística.

El propósito principal del caché local de ByConity es almacenar datos en caché en almacenamiento distribuido mediante el uso de discos de caché local con menor costo (capacidad) para reducir el aumento del retraso en el rendimiento causado por las lecturas de la red. El uso de caché local puede mejorar la velocidad de acceso y la velocidad de respuesta de los datos, reduciendo así la dependencia de la red, reduciendo la demora del sistema y mejorando el rendimiento y la estabilidad del sistema.

Expansión y contracción no inductivas

A medida que se duplican los datos comerciales, es necesario respaldar el desarrollo comercial a través de la expansión continua. Sin embargo, el costo de expansión sobre la base de ClickHouse es muy alto. Esto se debe a que ClickHouse no considera específicamente la expansión y contracción en términos de arquitectura, lo que requiere Los estudiantes de operación y mantenimiento de forma manual o La expansión se completa a través de scripts automatizados para crear nuevos nodos ClickHouse y migrar copiar datos, por lo que hay problemas de costo de tiempo y verificación de resultados de migración. Además, es necesario implementar nuevos fragmentos en nuevos nodos durante la expansión de la capacidad, lo que conducirá a datos desequilibrados, que deben resolverse mediante el reequilibrio de datos.

La arquitectura de separación informática y de almacenamiento de ByConity puede resolver este problema de forma natural y puede llevar a cabo una expansión y contracción insensible al negocio. La expansión de ByConity se divide en dos tipos: una es la expansión vertical, que consiste en ajustar la cantidad de núcleos de CPU y el tamaño de la memoria de los trabajadores; la otra es la expansión horizontal, que mejora la concurrencia del sistema al aumentar o disminuir la cantidad de trabajadores. Estos todavía se implementan a través de Virtual Warehouse and Worker de ByConity:

  • Por un lado, el administrador de recursos (Resource Manager) es responsable de la gestión y programación unificada de los recursos informáticos. Puede recopilar datos de rendimiento y uso de recursos de cada grupo informático, asignar recursos dinámicamente para tareas de lectura y escritura y tareas en segundo plano, y realizar expansión y contracción para mejorar el uso de recursos. Los componentes de ByConity han sido contenerizados, ajustando el número de réplicas de Kubernetes es muy conveniente expandir y contraer el grupo de cómputo especificado. Además, combinado con el uso de recursos del grupo informático, la expansión y contracción dinámicas se pueden realizar al establecer el umbral de expansión y contracción de kubernets.

  • Por otro lado, los metadatos y los datos de ByConity se almacenan en el extremo remoto. Los nodos informáticos sin estado hacen que la expansión y la contracción sean muy livianas. Solo necesita esperar a que se inicie la instancia informática y el servicio se puede realizar de inmediato sin datos adicionales. sobrecarga de migración. , para lograr escalado en tiempo real.

4. Escenarios de uso de ByConity

ByConity utiliza una gran cantidad de tecnologías OLAP maduras, como el motor de almacenamiento de columnas, la ejecución MPP, la optimización inteligente de consultas, la ejecución vectorizada, Codegen, la indexación, la compresión de datos, que se utilizan principalmente en escenarios informáticos y de consultas OLAP. Tiene muy buen rendimiento en el acceso a datos en tiempo real, consulta de agregación de tablas grandes y anchas, análisis y cálculos complejos bajo datos masivos y escenarios de consulta asociados de varias tablas.

clasificación de escena Escenas describir características
consulta interactiva consulta definida por el usuario Aplicaciones de datos que admiten análisis de consultas multidimensionales Dimensión libre, asociación de mesas múltiples, respuesta rápida
informe de autoservicio Compatibilidad con herramientas de BI como Tableau Dimensión libre, asociación de mesas múltiples, respuesta rápida
Análisis de retrato de usuario Compatibilidad con plataformas de retratos de personas circulares como DMP Dimensión libre, asociación de mesas múltiples, respuesta rápida
Análisis del efecto de marketing Admite análisis de embudo de efecto de tráfico Asociación de mesas múltiples, en tiempo real
Análisis de registro de comportamiento Exploración y análisis de registros de soporte Recuperación de registros, gran cantidad de datos
Tablero de datos en tiempo real Pantalla grande de monitoreo comercial en tiempo real Admite pantallas visuales grandes como DataV tiempo real
Tablero de estadísticas de datos en vivo Admite informes en tiempo real tiempo real
panel de negocios Herramienta de informes de soporte estadísticas, respuesta rápida
Supervisión del enlace del sistema Admite aplicaciones de monitoreo en tiempo real tiempo real
almacén de datos en tiempo real acceso a datos en tiempo real Admite escritura y actualización de datos en tiempo real Escritura de datos en tiempo real, inmediatamente visible
Cálculo de ETL casi en tiempo real Admite cálculos complejos, limpieza de datos carga mixta

tabla 1

V. Resumen y perspectiva

En resumen, ByConity utiliza una arquitectura separada de computación y almacenamiento, que ha sido optimizada y actualizada en muchos aspectos, y tiene las siguientes ventajas y características:

  • Aislamiento de recursos : aísle los recursos para diferentes inquilinos y los inquilinos no se verán afectados entre sí.

  • Separación de lectura y escritura : los recursos informáticos y los recursos de almacenamiento se desacoplan 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 la utilización eficiente de los recursos.

  • Fuerte consistencia de los datos : la fuerte consistencia de la lectura y escritura de datos garantiza que los datos estén siempre actualizados y que no haya inconsistencias entre la lectura y la escritura.

  • Alto rendimiento : adopte la optimización del motor OLAP convencional, como el almacenamiento en columnas, la ejecución vectorizada, la ejecución MPP, la optimización de consultas, etc. para proporcionar un excelente rendimiento de lectura y escritura.

La figura 5 es el plan de desarrollo futuro de ByConity. En el futuro, planeamos optimizar y mejorar desde los siguientes aspectos:

Figura 5 Plan de desarrollo futuro de ByConity

  • Se admite Distributed Disk Cache. Por un lado, resuelve el problema de la pérdida de caché local causada por reinicios de nodos. Por otro lado, espera lograr un mecanismo de caché globalmente óptimo y mejorar la tasa de aciertos de caché.

  • Admite servicios de apariencia, como Hudi e Iceberg, etc.

  • Admite el servicio de almacenamiento, en la capa de datos de almacenamiento de ByConity, utiliza la potencia informática del motor Spark o el motor Presto para realizar algunas tareas de ETL, etc.

Supongo que te gusta

Origin blog.csdn.net/FL63Zv9Zou86950w/article/details/130863750
Recomendado
Clasificación