Habilidades avanzadas en diseño de arquitectura de sistemas · Teoría y práctica del diseño de arquitectura de big data

Índice de contenidos de los artículos de la serie.

Habilidades avanzadas en diseño de arquitectura de sistemas · Conceptos de arquitectura de software, estilos arquitectónicos, ABSD, reutilización de arquitectura, DSSA (1) [Arquitecto de sistemas] Habilidades avanzadas en diseño de arquitectura de sistemas · Atributos de calidad del sistema
y evaluación de arquitectura (2) [Arquitecto de sistemas]
Habilidades avanzadas en diseño de arquitectura de sistemas · Análisis y diseño de confiabilidad del software (3) [Diseñador de arquitectura de sistemas]

现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。
Now everything is for the future of dream weaving wings, let the dream fly in reality.

Insertar descripción de la imagen aquí

1. Problemas con los sistemas tradicionales de procesamiento de datos

1.1 Problema de sobrecarga de datos de las bases de datos tradicionales

Al diseñar la arquitectura del sistema de datos de aplicaciones tradicionales, la aplicación accede directamente al sistema de base de datos. Cuando aumenta el número de visitas de usuarios, la base de datos no puede soportar la carga cada vez mayor de solicitudes de usuarios, lo que hace que el servidor de la base de datos no pueda responder a las solicitudes de los usuarios de manera oportuna y provoque errores de tiempo de espera.

Las soluciones comunes a este problema son las siguientes :
(1) Agregar una cola de procesamiento asincrónico
(2) Establecer una partición horizontal de la base de datos
(3) Establecer fragmentación o refragmentación de la base de datos
(4) Introducir tecnología de separación de lectura y escritura
(5) Introducir sub- tecnología de bases de datos y subtablas

1.2 Características de los grandes datos

Big data tiene las características de gran volumen y fuertes fallas. No es monótono en estructura. En segundo lugar, es diverso en tipos. Al procesar big data, el rendimiento de los sistemas de procesamiento de datos tradicionales es bajo debido a la sobrecarga de datos, fuentes complejas, diversidad. tipos y muchas otras razones. Es necesario adoptar nuevos métodos. Nuevas tecnologías representadas por arquitectura informática y algoritmos inteligentes; la aplicación de big data se centra en explorar la correlación entre datos, en lugar de la relación causal lógica tradicional; por lo tanto, el propósito y el valor de big data es descubrir nuevos conocimientos, obtener conocimientos y tomar decisiones científicas.

La tecnología moderna de procesamiento de big data se divide principalmente en las siguientes categorías :

(1) Basado en el sistema de archivos distribuido Hadoop.
(2) Utilice la tecnología de procesamiento de datos Map/Reduce o Spark.
(3) Utilice la cola de mensajes de transmisión de datos Kafaka y el formato binario Avro.

1.3 Proceso de utilización de big data

El proceso de utilización de big data se divide en cuatro procesos : recopilación, limpieza, estadística y minería .

2. Análisis de la arquitectura del sistema de procesamiento de big data.

2.1 Desafíos que enfrentan los sistemas de procesamiento de big data

Los principales desafíos que enfrentan los sistemas de procesamiento de big data son :
(1) Cómo utilizar la tecnología de la información y otros medios para procesar datos no estructurados y semiestructurados.
(2) Cómo explorar la complejidad de big data, el método de caracterización de la incertidumbre y el modelado de sistemas de big data.
(3) El impacto de la relación entre la heterogeneidad de los datos y la heterogeneidad de la toma de decisiones en el descubrimiento de conocimientos de big data y la toma de decisiones de gestión.

2.2 Características de los sistemas de procesamiento de big data

Los atributos y características que debe tener un sistema de procesamiento de big data incluyen :
robustez y tolerancia a fallas, baja latencia, escalabilidad horizontal (escalamiento mejorando el rendimiento de la máquina), consulta ad hoc, escalable y de propósito general (los usuarios consultan según sus propios requisitos). Mantenimiento mínimo y depurable.

3. Arquitectura típica de big data

2.1 Arquitectura lambda

La arquitectura Lambda es un sistema distribuido escalable y tolerante a fallas para procesar datos fuera de línea y en tiempo real simultáneamente.

Como se muestra en la figura, arquitectura Lambda:
Insertar descripción de la imagen aquí

La arquitectura Lambda se divide en las siguientes tres capas:
(1) Capa por lotes : almacena conjuntos de datos. La función principal de esta capa es almacenar el conjunto de datos principal. La capa por lotes precalcula la función de consulta en el conjunto de datos y construye la consulta. Vista correspondiente. Batch Layer puede manejar muy bien datos fuera de línea, pero hay muchos datos de escena que se generan continuamente en tiempo real y requieren procesamiento de consultas en tiempo real. Para esta situación, Speed ​​​​Layer es más adecuado.

(2) Capa de aceleración (Capa de velocidad) : Batch Layer procesa todo el conjunto de datos. La función principal de esta capa es procesar datos incrementales en tiempo real, mientras que Speed ​​​​Layer procesa el último flujo de datos incrementales. En aras de la eficiencia, la capa de velocidad actualizará continuamente la vista en tiempo real después de recibir nuevos datos, mientras que la capa por lotes obtiene directamente la vista por lotes en función de todo el conjunto de datos fuera de línea.

(3) Capa de servicio : la función principal de esta capa es responder a las solicitudes de los usuarios. La capa de servicio se utiliza para fusionar los conjuntos de datos de resultados en la vista por lotes y la vista en tiempo real en el conjunto de datos final.

Ventajas y desventajas de la arquitectura Lambda:

Ventajas
(1) Buena tolerancia a fallos. La arquitectura Lambda proporciona una tolerancia a fallas más amigable para los sistemas de big data. Una vez que ocurre un error, podemos
reparar el algoritmo o recalcular la vista desde cero.
(2) Alta flexibilidad de consultas. La capa de procesamiento por lotes permite consultas ad hoc sobre cualquier dato.
(3) Fácil de expandir y contraer. Todas las capas de procesamiento por lotes, aceleración y servicio son fácilmente extensibles. Debido a que ambos son
sistemas completamente distribuidos, podemos ampliarlos fácilmente agregando nuevas máquinas.
(4) Fácil de ampliar. Agregar una vista es tan fácil como agregar algunas funciones nuevas al conjunto de datos principal.

Desventajas
(1) Sobrecarga de codificación causada por la cobertura completa de la escena.
(2) Es beneficioso volver a entrenar fuera de línea para escenarios específicos.

2.2 Arquitectura Kappa

La arquitectura Kappa se optimiza en función de la arquitectura Lamada, elimina la arquitectura Batch Layer y reemplaza el canal de datos con una cola de mensajes.
Insertar descripción de la imagen aquí

Desde la perspectiva de los escenarios de uso, existen dos diferencias principales entre la arquitectura Kappa y Lambda:

(1) Kappa no es una arquitectura alternativa a Lambda, sino una versión simplificada de la misma. Kappa ha abandonado el soporte para el procesamiento por lotes y es mejor para las necesidades de análisis de la propia empresa en escenarios de escritura de datos incrementales, como varios datos de series de tiempo. escenario, tiempo de existencia natural El concepto de computación de ventana y de transmisión cumple directamente con los requisitos de la tarea de compensación histórica y de computación en tiempo real;

(2) Lambda admite directamente el procesamiento por lotes, por lo que es más adecuado para escenarios de consulta y análisis de datos históricos. Por ejemplo, los analistas de datos deben realizar análisis exploratorios de datos históricos de acuerdo con cualquier combinación de condiciones y tienen ciertos requisitos en tiempo real y Esperamos obtener el análisis lo antes posible. Como resultado, el procesamiento por lotes puede satisfacer estas necesidades de manera más directa y eficiente.

La ventaja de la arquitectura Kappa es que unifica el código en tiempo real y fuera de línea, facilita el mantenimiento y unifica el problema del calibre de los datos, y evita el problema de fusionar datos fuera de línea en la arquitectura Lambda. Al consultar datos históricos, solo necesita reproducir los datos históricos almacenados.

Las deficiencias de Kappa también son obvias:

(1) La cantidad de datos almacenados en caché por el middleware de mensajes y los datos de rastreo tienen cuellos de botella en el rendimiento. Por lo general, el algoritmo requiere datos de los últimos 180 días, si hay un middleware de mensajes, sin duda habrá mucha presión. Al mismo tiempo, retroceder y revisar 180 días de datos a la vez consume muchos recursos informáticos en tiempo real.

(2) En el procesamiento de datos en tiempo real, cuando se encuentra una gran cantidad de flujos en tiempo real diferentes para la correlación, se depende en gran medida de las capacidades del sistema informático en tiempo real, lo que puede provocar la pérdida de datos debido a la secuencia del flujo de datos. asuntos.

(3) Cuando Kappa abandonó el módulo de procesamiento de datos fuera de línea, también abandonó la característica más estable y confiable de la computación fuera de línea. Aunque Lambda garantiza la estabilidad de la informática fuera de línea, el costo de mantenimiento de los sistemas duales es alto y los dos conjuntos de códigos plantean dificultades en la operación y el mantenimiento posteriores. Actualmente existen algunas soluciones a los problemas anteriores del marco Kappa. Para el problema del rendimiento de los datos de la caché de la cola de mensajes, el marco Kappa + propone utilizar HDFS para almacenar datos intermedios. En respuesta al problema de las capacidades insuficientes de la capa de visualización del marco Kappa, algunas personas también han propuesto una solución al sistema de análisis híbrido.

2.3 Comparación entre la arquitectura Lambda y la arquitectura Kappa

Comparación entre la arquitectura Lambda y la arquitectura Kappa

Comparar contenido arquitectura lambda arquitectura kappa
Complejidad y costes de desarrollo y mantenimiento. Es necesario mantener dos sistemas (motores), lo cual es complejo y requiere altos costos de desarrollo y mantenimiento. Sólo es necesario mantener un sistema (motor), de baja complejidad y bajos costes de desarrollo y mantenimiento.
Gastos generales computacionales El procesamiento por lotes y los cálculos en tiempo real deben ejecutarse todo el tiempo, lo que requiere una gran sobrecarga informática. Se realizan cálculos completos cuando es necesario y la sobrecarga de cálculo es relativamente pequeña.
tiempo real Satisfacer en tiempo real Satisfacer en tiempo real
Capacidades de procesamiento de datos históricos. Procesamiento por lotes completo, gran rendimiento y sólidas capacidades de procesamiento de datos históricos Procesamiento de transmisión completo, rendimiento relativamente bajo y capacidades de procesamiento de datos históricos relativamente débiles

Opciones de diseño de la arquitectura Lambda y la arquitectura Kappa.

Con base en el análisis comparativo de las dos arquitecturas, se tuvieron en cuenta para la selección las necesidades comerciales, los requisitos técnicos, la complejidad del sistema, los costos de desarrollo y mantenimiento y las capacidades de procesamiento de datos históricos. Aunque existe una cierta diferencia en la sobrecarga computacional, la diferencia no es muy grande, por lo que no se considera un factor.

(1) Necesidades comerciales y requisitos técnicos
Los usuarios deben elegir la arquitectura de acuerdo con sus propias necesidades comerciales. Si la empresa depende obligatoriamente de tecnologías clave como Hadoop, Spark y Strom, puede ser más apropiado elegir la arquitectura Lambda. Si prefiere la informática de transmisión al procesar datos y depende del motor informático Flink, entonces puede ser más apropiado elegir la arquitectura Kappa.

(2) Complejidad
Si los parámetros del modelo de algoritmo deben modificarse con frecuencia en el proyecto y la arquitectura Lambda necesita modificar repetidamente dos conjuntos de códigos, obviamente no es tan simple y conveniente como la arquitectura Kappa. Al mismo tiempo, si el modelo de algoritmo admite el procesamiento por lotes y la computación en streaming al mismo tiempo, o si desea utilizar un código para el procesamiento de datos, puede elegir la arquitectura Kappa. En algunos casos complejos, los resultados del procesamiento en tiempo real y el procesamiento fuera de línea no se pueden unificar. Por ejemplo, algunos modelos de predicción de aprendizaje automático deben obtener primero el modelo de entrenamiento a través del procesamiento por lotes fuera de línea y luego enviarlo al procesamiento de transmisión en tiempo real para verificación y prueba Entonces, en este caso, la capa de procesamiento por lotes y la capa de procesamiento de flujo no se pueden combinar, por lo que se debe seleccionar la arquitectura Lambda.

(3) Costos de desarrollo y mantenimiento:
la arquitectura Lambda requiere un cierto grado de costos de desarrollo y mantenimiento, incluido el desarrollo, implementación, prueba y mantenimiento de dos sistemas, y es adecuada para desarrolladores con suficientes recursos económicos, técnicos y humanos. La arquitectura Kappa solo necesita mantener un sistema, lo cual es adecuado para desarrolladores que no desean invertir demasiado en desarrollo y mantenimiento.

(4) Capacidades de procesamiento de datos históricos
En algunos casos, los proyectos frecuentemente entrarán en contacto con conjuntos de datos masivos para su análisis, como datos de precipitación regional en los últimos diez años. Este tipo de datos es adecuado para el análisis del sistema de procesamiento por lotes, y el Lambda Se debe seleccionar la arquitectura Si siempre utiliza conjuntos de datos a pequeña escala y el sistema de procesamiento de flujo es completamente utilizable, debe elegir la arquitectura Kappa.

4. Práctica de la arquitectura de big data

4.1 Red de vídeo a gran escala

Como se muestra en la figura, la arquitectura Lambda en una determinada red olímpica:
Insertar descripción de la imagen aquí

4.2 Plataforma publicitaria

Como se muestra en la figura, la arquitectura Lambda en una determinada plataforma de publicidad en línea:
Insertar descripción de la imagen aquí

Como se muestra en la figura, la arquitectura de un determinado sistema de big data de valores:
Insertar descripción de la imagen aquí

4.3 Sistema de big data inteligente para la toma de decisiones de comercio electrónico

Como se muestra en la figura, la arquitectura de un sistema de big data inteligente para la toma de decisiones de comercio electrónico:
Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_30197685/article/details/132514675
Recomendado
Clasificación