Habilidades avançadas em design de arquitetura de sistema · Teoria e prática de design de arquitetura de big data

Índice de artigos da série

Habilidades avançadas em design de arquitetura de sistema · Conceitos de arquitetura de software, estilos de arquitetura, ABSD, reutilização de arquitetura, DSSA (1) [Arquiteto de Sistema]
Habilidades avançadas em design de arquitetura de sistema · Atributos de qualidade de sistema e avaliação de arquitetura (2) [Arquiteto de Sistema]
Habilidades avançadas em projeto de arquitetura de sistema · Análise e projeto de confiabilidade de software (3) [Designer de arquitetura de sistema]

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

Insira a descrição da imagem aqui

1. Problemas com sistemas tradicionais de processamento de dados

1.1 Problema de sobrecarga de dados de bancos de dados tradicionais

Ao projetar a arquitetura do sistema de dados de aplicativos tradicionais, o aplicativo acessa diretamente o sistema de banco de dados. Quando o número de visitas de usuários aumenta, o banco de dados não consegue suportar a carga crescente de solicitações de usuários, fazendo com que o servidor de banco de dados não consiga responder às solicitações de usuários em tempo hábil e causando erros de tempo limite.

As soluções comuns para este problema são as seguintes :
(1) Adicionar fila de processamento assíncrono
(2) Estabelecer particionamento horizontal do banco de dados
(3) Estabelecer fragmentação ou refragmentação do banco de dados
(4) Introduzir tecnologia de separação leitura-gravação
(5) Introduzir sub- tecnologia de banco de dados e subtabelas

1.2 Características do big data

Big data tem as características de grande volume e forte falha. Não é monótono em estrutura. Em segundo lugar, é diversificado em tipos. Ao processar big data, o desempenho dos sistemas tradicionais de processamento de dados é baixo devido à sobrecarga de dados, fontes complexas, diversas tipos e muitas outras razões. Novos métodos precisam ser adotados. Novas tecnologias representadas por arquitetura de computação e algoritmos inteligentes; a aplicação de big data se concentra em explorar a correlação entre os dados, em vez da tradicional relação causal lógica; portanto, o propósito e o valor do big data é descobrir novos conhecimentos, obter insights e tomar decisões científicas.

A tecnologia moderna de processamento de big data é dividida principalmente nas seguintes categorias :

(1) Baseado no sistema de arquivos distribuído Hadoop.
(2) Usar tecnologia de processamento de dados Map/Reduce ou Spark.
(3) Use a fila de mensagens de transmissão de dados Kafaka e o formato binário Avro.

1.3 Processo de utilização de big data

O processo de utilização do big data é dividido em quatro processos : coleta, limpeza, estatística e mineração .

2. Análise da arquitetura do sistema de processamento de big data

2.1 Desafios enfrentados pelos sistemas de processamento de big data

Os principais desafios enfrentados pelos sistemas de processamento de big data são :
(1) Como usar a tecnologia da informação e outros meios para processar dados não estruturados e semiestruturados.
(2) Como explorar a complexidade do big data, o método de caracterização da caracterização da incerteza e a modelagem do sistema de big data.
(3) O impacto da relação entre a heterogeneidade dos dados e a heterogeneidade da tomada de decisões na descoberta de conhecimento de big data e na tomada de decisões de gestão.

2.2 Características dos sistemas de processamento de big data

Os atributos e características que um sistema de processamento de big data deve ter incluem :
robustez e tolerância a falhas, baixa latência, escalabilidade horizontal (escalonamento melhorando o desempenho da máquina), propósito geral, escalável, consulta ad hoc (consulta dos usuários de acordo com seus próprios requisitos), Manutenção mínima e depurável.

3. Arquitetura típica de big data

2.1 Arquitetura Lambda

A arquitetura Lambda é um sistema distribuído escalável e tolerante a falhas para processamento simultâneo de dados offline e em tempo real.

Conforme mostrado na figura, arquitetura Lambda:
Insira a descrição da imagem aqui

A arquitetura Lambda é dividida nas seguintes três camadas:
(1) Camada de lote : armazena conjuntos de dados. A função principal desta camada é armazenar o conjunto de dados principal. A camada de lote pré-calcula a função de consulta no conjunto de dados e constrói a consulta Visualização correspondente. O Batch Layer pode lidar muito bem com dados offline, mas há muitos dados de cena que são gerados continuamente em tempo real e requerem processamento de consulta em tempo real. Para esta situação, o Speed ​​​​Layer é mais adequado.

(2) Camada de aceleração (camada de velocidade) : a camada de lote processa todo o conjunto de dados. A função principal desta camada é processar dados incrementais em tempo real, enquanto a camada de velocidade processa o fluxo de dados incremental mais recente. Por uma questão de eficiência, a camada de velocidade atualizará continuamente a visualização em tempo real após receber novos dados, enquanto a camada de lote obtém diretamente a visualização de lote com base em todo o conjunto de dados offline.

(3) Camada de serviço : A função principal desta camada é responder às solicitações do usuário. A camada de serviço é usada para mesclar os conjuntos de dados de resultados em Visualização em lote e Visualização em tempo real no conjunto de dados final.

Vantagens e desvantagens da arquitetura Lambda:

Vantagens
(1) Boa tolerância a falhas. A arquitetura Lambda fornece tolerância a falhas mais amigável para sistemas de big data. Quando ocorre um erro, podemos
reparar o algoritmo ou recalcular a visualização do zero.
(2) Alta flexibilidade de consulta. A camada de processamento em lote permite consultas ad hoc em quaisquer dados.
(3) Fácil de expandir e contrair. Todas as camadas de processamento em lote, aceleração e serviço são facilmente extensíveis. Como ambos são
sistemas totalmente distribuídos, podemos facilmente aumentar a escala adicionando novas máquinas.
(4) Fácil de expandir. Adicionar uma visualização é tão fácil quanto adicionar algumas novas funções ao conjunto de dados principal.

Desvantagens
(1) Sobrecarga de codificação causada pela cobertura total da cena.
(2) É benéfico treinar novamente off-line para cenários específicos.

2.2 Arquitetura Kappa

A arquitetura Kappa é otimizada com base na arquitetura Lamada, exclui a arquitetura Batch Layer e substitui o canal de dados por uma fila de mensagens.
Insira a descrição da imagem aqui

Do ponto de vista dos cenários de uso, existem duas diferenças principais entre a arquitetura Kappa e o Lambda:

(1) Kappa não é uma arquitetura alternativa ao Lambda, mas uma versão simplificada dele. Kappa desistiu do suporte para processamento em lote e é melhor nas necessidades de análise do próprio negócio para cenários de gravação de dados incrementais, como vários dados de séries temporais cenários, tempo de existência natural O conceito de janela, streaming de computação atende diretamente aos seus requisitos de tarefa de computação em tempo real e compensação histórica;

(2) Lambda suporta diretamente o processamento em lote, por isso é mais adequado para análise de dados históricos e cenários de consulta.Por exemplo, os analistas de dados precisam realizar análises exploratórias de dados históricos de acordo com qualquer combinação de condições e ter certos requisitos em tempo real e espero obter análises o mais rápido possível. Como resultado, o processamento em lote pode atender a essas necessidades de forma mais direta e eficiente.

A vantagem da arquitetura Kappa é que ela unifica o código em tempo real e offline, facilita a manutenção e unifica o problema do calibre dos dados e evita o problema de mesclar dados offline na arquitetura Lambda.Ao consultar dados históricos, você só precisa reproduzir os dados históricos armazenados.

As deficiências do Kappa também são óbvias:

(1) A quantidade de dados armazenados em cache pelo middleware de mensagens e os dados de rastreamento apresentam gargalos de desempenho. Normalmente, o algoritmo requer dados dos últimos 180 dias. Se houver um middleware de mensagens, sem dúvida haverá muita pressão. Ao mesmo tempo, voltar e revisar 180 dias de dados por vez consome muitos recursos de computação em tempo real.

(2) No processamento de dados em tempo real, quando um grande número de diferentes fluxos em tempo real são encontrados para correlação, ele depende fortemente das capacidades do sistema de computação em tempo real, o que pode levar à perda de dados devido à sequência do fluxo de dados problemas.

(3) Quando a Kappa abandonou o módulo de processamento de dados offline, também abandonou o recurso mais estável e confiável da computação offline. Embora o Lambda garanta a estabilidade da computação offline, o custo de manutenção dos sistemas duais é alto e os dois conjuntos de códigos trazem dificuldades na operação e manutenção posteriores. Atualmente, existem algumas soluções para os problemas acima da estrutura Kappa. Para o problema de desempenho dos dados do cache da fila de mensagens, a estrutura Kappa + propõe o uso de HDFS para armazenar dados intermediários. Em resposta ao problema da capacidade insuficiente da camada de exibição da estrutura Kappa, algumas pessoas também propuseram uma solução para o sistema de análise híbrido.

2.3 Comparação entre arquitetura Lambda e arquitetura Kappa

Comparação entre arquitetura Lambda e arquitetura Kappa

Comparar conteúdo Arquitetura lambda Arquitetura Kappa
Complexidade e custos de desenvolvimento e manutenção Dois sistemas (motores) precisam ser mantidos, o que é complexo e exige altos custos de desenvolvimento e manutenção. Apenas um sistema (motor) precisa ser mantido, com baixa complexidade e baixos custos de desenvolvimento e manutenção.
Sobrecarga computacional O processamento em lote e os cálculos em tempo real precisam ser executados o tempo todo, o que exige grande sobrecarga computacional. Cálculos completos são realizados quando necessário e a sobrecarga de cálculo é relativamente pequena.
tempo real Satisfaça em tempo real Satisfaça em tempo real
Capacidades de processamento de dados históricos Processamento em lote completo, grande rendimento e fortes recursos de processamento de dados históricos Processamento de streaming completo, rendimento relativamente baixo e recursos de processamento de dados históricos relativamente fracos

Opções de design de arquitetura Lambda e arquitetura Kappa

Com base na análise comparativa das duas arquiteturas, as necessidades de negócios, os requisitos técnicos, a complexidade do sistema, os custos de desenvolvimento e manutenção e as capacidades históricas de processamento de dados foram levados em consideração para a seleção. Embora haja uma certa diferença na sobrecarga computacional, a diferença não é muito grande, por isso não é considerada um fator.

(1) Necessidades de negócios e requisitos técnicos
Os usuários precisam escolher a arquitetura de acordo com suas próprias necessidades de negócios. Se o negócio tiver uma dependência obrigatória de tecnologias-chave como Hadoop, Spark e Strom, pode ser mais apropriado escolher a arquitetura Lambda ; se você preferir streaming de computação ao processar dados e contar com o mecanismo de computação Flink, então pode ser mais apropriado escolher a arquitetura Kappa.

(2) Complexidade
Se os parâmetros do modelo de algoritmo precisam ser modificados frequentemente no projeto, e a arquitetura Lambda precisa modificar repetidamente dois conjuntos de códigos, obviamente não é tão simples e conveniente quanto a arquitetura Kappa. Ao mesmo tempo, se o modelo de algoritmo suportar processamento em lote e computação de streaming ao mesmo tempo, ou se você quiser usar um código para processamento de dados, poderá escolher a arquitetura Kappa. Em alguns casos complexos, os resultados do processamento em tempo real e do processamento offline não podem ser unificados.Por exemplo, alguns modelos de previsão de aprendizado de máquina precisam primeiro obter o modelo de treinamento por meio de processamento em lote offline e, em seguida, enviá-lo para processamento de streaming em tempo real para verificação e teste. Nesse caso, a camada de processamento em lote e a camada de processamento de fluxo não podem ser combinadas, portanto, a arquitetura Lambda deve ser selecionada.

(3) Custos de desenvolvimento e manutenção:
A arquitetura Lambda requer um certo grau de custos de desenvolvimento e manutenção, incluindo o desenvolvimento, implantação, teste e manutenção de dois sistemas. É adequada para desenvolvedores com recursos econômicos, técnicos e humanos suficientes. A arquitetura Kappa precisa manter apenas um sistema, o que é adequado para desenvolvedores que não desejam investir muitos custos em desenvolvimento e manutenção.

(4) Capacidades de processamento de dados históricos
Em alguns casos, os projetos entrarão frequentemente em contato com conjuntos massivos de dados para análise, como dados regionais de precipitação nos últimos dez anos.Esse tipo de dados é adequado para análise de sistemas de processamento em lote, e o Lambda arquitetura deve ser selecionada. Se você sempre usa conjuntos de dados de pequena escala e o sistema de processamento de fluxo é totalmente utilizável, você deve escolher a arquitetura Kappa.

4. Prática de arquitetura de big data

4.1 Rede de vídeo em grande escala

Conforme mostrado na figura, a arquitetura Lambda em uma determinada rede olímpica:
Insira a descrição da imagem aqui

4.2 Plataforma publicitária

Conforme mostrado na figura, a arquitetura Lambda em uma determinada plataforma de publicidade online:
Insira a descrição da imagem aqui

Conforme mostrado na figura, a arquitetura de um determinado sistema de big data de valores mobiliários:
Insira a descrição da imagem aqui

4.3 Sistema inteligente de big data para tomada de decisões de comércio eletrônico

Conforme mostrado na figura, a arquitetura de um sistema inteligente de big data para tomada de decisões de comércio eletrônico:
Insira a descrição da imagem aqui

Guess you like

Origin blog.csdn.net/weixin_30197685/article/details/132514675