RabbitMQ fila de mensagens baseada em soluções de transações distribuídas - MQ distribuídos mensagens combate middleware

1 Velocidade entender MQ

Introdução Rabbitmg para resolver a transação distribuída deve dominar os cinco conceitos fundamentais

Um middleware distribuído de mensagens, poder de processamento alta concorrência com base no desenvolvimento da linguagem Erlang, com o nível de linguagem. E o Spring Framework é a mesma empresa.
persistência apoio, alta disponibilidade

Cinco conceitos fundamentais:

  1. Fila: dados reais do armazenamento local
  2. Câmbio: receber um pedido, o despejo de dados
  3. Bind: Depois de receber a solicitação, quando para armazenar
  4. dados da aplicação é transmitida: produtor mensagem
  5. consumidor mensagem: Remover o processamento de dados do aplicativo

2, problemas de transações distribuídas

transação distribuída é uma questão de negócios, não ser divorciada da cena específica.

Várias soluções 2.1 transações distribuídas

● banco de dados baseado XA / JTA meio de um acordo
requer o suporte do fornecedor de banco de dados; componente JAVA tem atomikos etc.
● assíncrona revisar o modo como os dados
Alipay, iniciativa pay micro-canal para verificar o status do pagamento, na forma de contas;
soluções ● são baseados em fontes confiáveis (MQ) de
assíncrona cena; universal forte; expansão da maior
● soluções de programação TCC
cuidadosamente selecionados, Ali, formigas vestido dourado próprio pacote DTX

Este artigo objetivo: para todas as pessoas, aprender a resolver o problema de transações distribuídas com base em fontes confiáveis.
Soluções para transação distribuída, o negócio altamente segmentados, é ideias importantes em vez de copiar

  • Missão dos EUA arquitetura do sistema de comentário

questões transação distribuída entre vários sistemas 2.2

  • ordens gerado usuário único
  • Ordens precisa passar os dados, gerando assim dois problemas de consistência transacionais

Caso errado

Quando a chamada de interface falhar, a transação é rolada sistema de ordem de volta, o usuário é solicitado operação falhar

误以为这样的接口调用写法,就不会有分布式事务问题

Interface de sucesso chamada ou fracasso, terá um problemas de transação distribuída:

  1. Interface de chamada for bem sucedida, a transação do banco de dados do sistema a fim submissão falha, o sistema não reverter a carta de porte, gerar dados
  2. Interface chama um tempo limite, o sistema de banco de dados a fim de reversão de transação, interface de sistema de carta de porte continua a gerar dados

Em ambos os casos, ela pode levar a inconsistências de dados

3, para alcançar uma transação distribuída - Cinco Passo

Resolver transações distribuídas via MQ 5 passos, bem como processamento de transações distribuídas local, a nota

  • Antes de sistema de pedidos para enviar todos os pedidos do sistema waybill interface HTTP, um problema!
  • Portanto, nós consideramos uma mensagem para MQ, scratch assíncrona!

3.1 conceito de design global


Depois de ordens de catering, lentamente, à espera do centro de dados de geração de conhecimento aéreo, não é simultaneidade obrigatória

  1. produção de confiança: para garantir que a mensagem deve ser enviada para o Rabitmq serviço
  2. Consumo de confiança: para garantir que a mensagem deve tirar adequada consumido

E, finalmente, com dados multi-partido chegar a um consenso.

3,2 Passo 1 - produzir informação gravada fiável mensagem

  • Há perigos ocultos - possíveis mensagens não conseguiu enviá-lo!

Para garantir o sucesso de certos dados são enviados para o MQ.
Na mesma operação, um aumento recorde na mesa de operação, o registro 每一条发往MQ的数据以及它的发送状态
para que adicionar uma tabela de informações de local no sistema de pedidos

Assim, na prática o código, não pelas interfaces dos sistemas HTTP chamada interface de faturamento, mas o uso de MQ

Ao gerar ordens, mas também guardar a tabela de informações locais


3.3 Passo 2 - Produção Reliable Messaging (modificação do estado de transmissão de mensagens)

  • Use RabbitMQ mecanismo de publicação transacional reconhecimento (confirmar)
    após a abertura, MQ mensagem de aceitação precisa Return Receipt

  • Em seguida, ser capaz de saber como atualizar a tabela informações locais

- mecanismo de Confirmação para assegurar aberto em SB


  • Se a confirmação não for recebida, a modificação mensagem de falha do Estado e outras circunstâncias especiais
    兜底方案:定时检查消息表,超时没发送成功,再次重发

3,4 Passo 3 - o processamento de mensagens de confiança (o processamento normal)

  • Depois que o sistema waybill recebe os dados da mensagem de repente vai para baixo, ou visite a carta de porte quando DB, DB repente vai para baixo, os dados da mensagem não está perdido em você !!!

Então, precisamos das seguintes características:

Idempotente
impedem o processamento duplicado dos dados de mensagem, uma operação de utilizador, os dados de processamento em tempo correspondendo a apenas

aberto 手动ACK模式
pelo consumidor controle mensagem retransmissão / remover / descarte

3,5 Passo 4 - mensagens confiável (mensagem de retransmissão)


Os consumidores processamento falhar, precisamos re-MQ novamente para o consumidor.
Anormalidades normalmente repetir várias vezes pelo próprio consumidor número recorde de tentativas, e o número de controles (nem sempre repetir!)

Passo Cinco 3,6 - mensagens confiável (mensagem de descarte)

manipulação do consumidor fracasso, ou descartados diretamente transferidos para uma fila letra morta (DLQ)
重试次数过多、消息内容格式错误等情况,通过线上预警机制通知运维人员

4 Resumo e extensões

Prós e contras de programa de 4,1 MQ

vantagem de abertura

  1. versatilidade
  2. Desenvolvimento e forte
  3. programa madura

deficiências na boca

  1. middleware baseada em mensagens, apenas para cenários assíncronos
  2. processamento de mensagens será adiada, necessidade de ser capaz de tolerar a negócios

Tente evitar transação distribuída;
tentar fazer transações non-core assíncronas;

4,2 expansão

base teórica para soluções de transações distribuídas

CAP teoria
teoria BASE
2PC protocolo
3PC protocolo
algoritmo Paxos.
Protocolo de coerência Raft

Lançado cinco artigos originais · ganhou elogios 0 · Visualizações 245

Acho que você gosta

Origin blog.csdn.net/weixin_32822759/article/details/105365940
Recomendado
Clasificación