Quatro soluções e demonstrações práticas para sincronização de dados entre MySQL e ES

1. Escrita dupla síncrona

Ou seja, chamada síncrona, que é a maneira mais simples. Ao gravar dados no MySQL, os dados são gravados no ES ao mesmo tempo.

vantagem

1. Lógica de negócios simples
2. Alto desempenho em tempo real

deficiência

1. Codificação rígida. Onde quer que o mysql precise ser escrito, o código para escrever ES precisa ser adicionado.
2. Forte acoplamento de negócios
. 3. Há um risco de perda de dados devido à falha de gravação dupla.
4. Baixo desempenho: Originalmente, o o desempenho do mysql não é muito alto. Com um ES, o desempenho do sistema diminuirá inevitavelmente.

Risco de falha de gravação dupla

O sistema ES está indisponível;
há uma falha de rede entre o programa e o ES;
o programa é reiniciado, fazendo com que o sistema não tenha tempo para gravar no ES, etc.
Nesse caso, se houver um requisito de forte consistência de dados, a gravação dupla deverá ser feita em uma transação. Depois que as coisas forem usadas, o desempenho cairá ainda mais obviamente.

Demonstração do projeto

Vá para: Chamada síncrona para sincronização de dados entre MySQL e ES

2. Escrita dupla assíncrona (modo MQ)

Para cenários de escrita de múltiplas fontes de dados, o MQ pode ser usado para implementar escrita assíncrona de múltiplas fontes.Nesse caso, a lógica de escrita de cada fonte não interfere entre si, e a escrita anormal ou lenta de uma única fonte de dados não afetam outras fontes de dados.A gravação, embora a taxa de transferência geral de gravação tenha aumentado, porque o consumo do MQ é assíncrono, não é adequado para cenários de negócios em tempo real.

vantagem

Possui alto desempenho
e não está sujeito a problemas de perda de dados. Baseia-se principalmente no mecanismo de garantia de consumo de mensagens MQ. Por exemplo, se o ES estiver inoperante ou a gravação falhar, as mensagens MQ podem ser consumidas novamente.
As gravações de várias fontes são isoladas umas das outras para facilitar a expansão de mais gravações de fontes de dados.

deficiência

Problema de codificação rígida, o acesso a novas fontes de dados requer a implementação de um novo código de consumidor
. Aumento da complexidade do sistema: a introdução de middleware de mensagens
pode causar problemas de atraso: MQ é um modelo de consumo assíncrono e os dados gravados pelo usuário podem não ser visíveis imediatamente , causando atraso.

Demonstração do projeto

Vá para: Chamada assíncrona para sincronização de dados MySQL e ES

3. Sincronização baseada em Datax

DataX é uma ferramenta/plataforma de sincronização de dados off-line amplamente usada no Grupo Alibaba. Ele implementa vários tipos de dados, incluindo MySQL, Oracle, SqlServer, Postgre, HDFS, Hive, ADS, HBase, TableStore (OTS), MaxCompute (ODPS), DRDS. , etc. Função eficiente de sincronização de dados entre fontes de dados estruturados.

Componentes do núcleo

Leitor: Módulo de aquisição de dados, responsável por coletar dados da fonte
Gravador: Módulo de gravação de dados, responsável por escrever na biblioteca de destino Estrutura: Canal de transmissão de dados, responsável pelo processamento
de buffer de dados, etc.
plug-ins para implementar novas fontes de dados Apoiar
a compreensão dos componentes principais do módulo datax a partir de um JOB:
o datax conclui um único trabalho de sincronização de dados, chamado trabalho. O trabalho será responsável pela limpeza de dados, segmentação de tarefas, etc.;
após a tarefa for iniciado, o trabalho será baseado nas estratégias de segmentação de diferentes fontes. Dividido em várias tarefas para execução simultânea. Tarefa é a menor unidade para execução do trabalho. Após a conclusão da divisão, as tarefas são combinadas
em TaskGroup de acordo com o Agendador módulo.Cada grupo é responsável por certa simultaneidade e atribuição de tarefas.

Diagrama de arquitetura

Insira a descrição da imagem aqui

Fontes de dados e operações suportadas

Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui

Demonstração do projeto

Vá para: DataX implementa sincronização de dados entre Mysql e ElasticSearch (ES)

4. Sincronização em tempo real baseada em Binlog

Princípio de implementação

As etapas específicas são as seguintes:
ler o log binário do mysql e obter as informações de log da tabela especificada;
converter as informações lidas em MQ;
escrever um programa consumidor MQ;
consumir MQ continuamente e gravar a mensagem no ES após cada mensagem ser consumido. .

vantagem

Não há intrusão de código ou codificação rígida;
o sistema original não requer nenhuma alteração e não há percepção;
alto desempenho;
dissociação de negócios, não há necessidade de prestar atenção à lógica de negócios do sistema original.

deficiência

Construir um sistema Binlog é complicado;
se o MQ for usado para consumir as informações do binlog analisadas, também haverá o risco de atraso do MQ como a segunda opção.
A solução mais popular do setor: usar canal para monitorar binlog e sincronizar dados com es

Demonstração do projeto

Vá para:
Docker implanta Canal para monitorar o log binário do MySQL
SpringBoot integra Canal para obter sincronização de dados MySQL e ES


Fim ~

Acho que você gosta

Origin blog.csdn.net/m0_68681879/article/details/132837139
Recomendado
Clasificación