Como garantir a consistência dos dados na arquitetura micro-service?

Autor | cordeiro, Su Huai

Editar | Ash

Este artigo é falar sobre arquitetura (ID: archtime) o planejamento Re: microarquitetura quarta tópicos do artigo 0 serviço a partir de, vamos olhar para a forma de garantir a consistência dos dados na arquitetura micro-service.

Reportagens Portal

EDITORIAL

Com a promoção da arquitectura micro-serviços, mais e mais empresas estão adotando micro-serviços arquitetura para construir a sua própria plataforma de negócios. Como o artigo dizia frente, arquitetura micro-serviços traz muitos benefícios para o desenvolvimento empresarial, ao mesmo tempo, como responsabilidade individual, o desenvolvimento independente e implantação, reutilização funcional e tolerância a falhas do sistema e assim por diante, mas também traz alguns problemas.

Difícil de começar, por exemplo, se torna grande, operação e manutenção torna-se mais complicado dependências entre os módulos é mais complexa, difícil de consistência de dados de garantia, e similares. Mas o caminho é sempre mais do que o problema, este artigo irá apresentar como podemos garantir a consistência dos dados da arquitetura micro-serviços.

Micro Data Services Architecture Coerência

Para plataforma de negócios eletrônicos, por exemplo, quando o pagamento único e as necessidades do usuário para modificar a ordem do estado do sistema e aumentar os pontos do usuário. Porque o sistema usa uma arquitetura de micro-service, isolado os serviços de serviços de pagamento, serviços de encomenda e de integração, cada serviço tem um banco de dados separado para armazenamento de dados. Quando o pagamento de sucesso de usuário, se é o fracasso do Estado ou modificar a fim de aumentar a falha de integração, irá resultar em dados inconsistentes.

A fim de resolver o problema da consistência dos dados no exemplo, um dos maneira mais direta é considerar a forte consistência dos dados. Assim como para assegurar uma forte consistência dos dados é? Começamos com a teoria ACID banco de dados relacional.

ACID

Bancos de dados relacionais têm a capacidade de resolver cenários de transações complexas, banco de dados relacional transacional para satisfazer as propriedades ACID.

  • atomicidade: Atomic (quer fazer ou não fazer)

  • consistência: Consistência (banco de dados de apenas um estado, não há estado indeterminado)

  • isolamento: Isolamento (sem interferência entre operações)

  • durabilidade: Permanente (a transação, uma vez comprometida, registros de dados mudança permanente)

Forte consistência dos dados de suporte de banco de dados tem propriedades ACID para garantir que os dados em si não parece inconsistente.

No entanto, a arquitetura micro-serviço, cada serviço tem a sua própria micro banco de dados, resultando em arquitetura do sistema não pode simplesmente atender o ACID micro-service, precisamos de olhar para a arquitetura de serviços de microdados soluções consistentes.

arquitetura do próprio sistema de micro-serviço é um sistema distribuído, e que o problema discutido neste artigo é, de fato, os problemas de consistência de dados de transações distribuídas, temos de falar sobre a teoria CAP BASE ea teoria de sistemas distribuídos.

CAP

meios de tampa que, num sistema distribuído, que compreende três elementos: Consistência (consistência), Disponibilidade (disponibilidade), tolerância de partição (tolerância a falhas partição), e três não podem ter ambos.

  • C: Consistência Consistência, todas as alterações de dados são sincronizados.

  • A: Disponibilidade Disponibilidade, ou seja, para responder adequadamente às solicitações dos usuários dentro de um prazo aceitável.

  • P: tolerância partição , Tolerância a falhas de partição, isto é, quando uma falha de nó ou particionamento de rede, o sistema ainda é capaz de fornecer para atender a consistência e disponibilidade dos serviços.

nó única base de dados relacional para garantir a consistência dos dados e forte (C) e disponibilidade (A), mas não pode garantir partição tolerante a falhas (P).

No entanto, num sistema distribuído, a fim de assegurar o módulo tolerância a falhas de partição (P), um equilíbrio só pode fazer dados consistência fortes (C) entre a disponibilidade de (A) e. desempenho específico dentro de um determinado período de tempo, os dados podem ser incompatíveis entre os módulos, mas pela compensação automática ou manual pode atingir um uniforme final.

BASE

teoria BASE é principalmente para resolver a teoria problema PAC da disponibilidade de sistemas distribuídos e consistência não pode ter ambos. teoria BASE contém os três elementos seguintes:

  • BA: Basicamente Disponível Básico está disponível.

  • S: soft state soft state, o Estado não pode sincronizado por algum tempo.

  • E: Eventualmente Consistente O acordo final, os dados finais são consistentes com ele, ao invés de sempre manter uma forte consistência.

Ácido-base diferentes modelos e se encontram a teoria da PAC, para garantir a disponibilidade do sistema em detrimento da consistência forte. Uma vez que a consistência forte sacrificial, o sistema durante o processamento do pedido, os dados podem ser inconsistentes com a presença de curto prazo.

Sistema em lidar com negócios, a gravação de um estado temporário de cada etapa. Quando ocorre uma excepção, de acordo com o estado ou determinar se deve continuar a processar o pedido para retornar ao estado original, de modo a conseguir uma consistência de dados final.

Por exemplo, no caso acima, as ordens de pagamento de sucesso com sucesso, mas não conseguiu aumentar a integração, neste momento, não deve ser rolado pay back e ordem, mas deve ser parte integrante do direito de fazer um aumento de algum método de compensação. Ele será mencionado método mais tarde específico.

Antes de compartilhar nossas práticas para transações distribuídas, olhar para a rápida resolução das transações de emissão distribuídos de duas fases protocolo.

Duas fases protocolo

X / Open DTP (Processo de transações distribuídas) é um modelo de transação distribuída, este modelo é usado principalmente de duas fases de protocolo (2PC, Two-Phase-Commit) para assegurar a integridade de transações distribuídas. Neste modelo, que tem três funções:

  • AP: Aplicação , Applications, camada de negócios.

  • RM: Resource Manager , Explorer, ou base de dados relacional para suportar interfaces XA componentes (especificação XA é X / Open organização Distributed Transaction especificação definido).

  • TM: Transaction Manager, Gerenciador de transações, é responsável por cada commit e rollback da RM.

Quando um aplicativo (AP) chamar o gerenciador de transações (TM) em submeter uma transação apresentadas em duas fases para implementar.

A primeira etapa (fase de preparação)

RM vários TM notificar todos participando na transação, prepare-se para enviar uma mensagem para cada RM.

Depois de entrar na RM fase de preparação após receber a mensagem, retorna seja diretamente uma falha, ou criar e executar transações locais, gravação de log transação local (redo e log undo), mas não se submete (aqui mantendo apenas o passo final nas operações menos demoradas a apresentar a segunda fase de aplicação).

A segunda fase (cometer / fase de reversão)

TM mensagem de falha é recebido RM RM fase de preparação ou obter um tempo limite de mensagem de retorno, em seguida, enviadas diretamente reversão mensagem (reversão) para o RM, ou submissão de envio (commit) mensagens.

RM confirmação ou reversão (TM) de acordo com a instrução, o bloqueio é libertado após a conclusão da execução (o estágio final de fechaduras de libertação) todas as operações durante a utilização.

As vantagens e desvantagens da confirmação de duas fases protocolo

vantagem

2PC fornece uma solução completa para transações distribuídas, seguir rigorosos propriedades ACID de transacções.

deficiência

  • TM troca de dados através da interface entre o respectivo XA RM, desde a fase de preparação da primeira fase, os dados de serviço envolvido foi bloqueada, e o bloqueio entre o processo de envio. Um impacto maior no desempenho do banco de dados em caso de alta concorrência e envolvido em mais módulos de serviço.

  • Duas fases modo expansível anti, operações em maior escala, envolvendo mais módulos, maior a limitação, o sistema de escalabilidade pior.

  • Na pilha tecnologia aplicações distribuídas relativamente complexas, o componente de armazenamento muitos não suportar o protocolo de XA.

Dois estágios muitos inconvenientes, tornando impossível a utilização desse programa diretamente em sistemas distribuídos para resolver o problema da consistência dos dados, mas fornece uma diretriz para resolver o problema da consistência dos dados em sistemas distribuídos.

Aqui está a participação através de um caso de como podemos garantir a consistência dos dados de arquitetura micro-serviços.

fontes confiáveis consistência eventual

fontes confiáveis esquema consistência eventual é essencialmente uma apresentação em duas fases, utilizando a aplicação componente MQ. Este cenário envolve três módulos:

  • aplicativos de upstream mensagem Executive Business MQ e enviar.

  • serviços de mensagens confiável e componentes de mensagens MQ , Coordenação mensagem transmitida a jusante e a montante e a jusante garantir a consistência dos dados.

  • aplicações a jusante , Mensagens e MQ monitorar a implementação de seus negócios.

A execução de aplicativos e serviços de transmissão de mensagens MQ a montante (primeira fase)

A execução de negócios local aplicativos de upstream e ligações de mensagens nas mesmas assuntos locais, para garantir que a operação foi bem sucedida e enviadas localmente ou mensagens MQ, ou dois passos falhar e back roll.

FIG interacção entre o serviço de mensagens de aplicação a montante e fiável é a seguinte:

  • Aplicação da mensagem de confirmação de transmissão a montante a ser sistema de mensagens confiável

  • sistema de mensagens confiável salva a mensagem a ser reconhecido e retorno

  • aplicativos de upstream realizar negócios locais

  • aplicativo de mensagens confiável notifica o reconhecimento a montante e envia o serviço de mensagens tenha sido realizada.

  • sistema de mensagens confiável para enviar uma mensagem de modificação de status e a mensagem é entregue ao middleware status de MQ.

  • Todos os passos possíveis falhas, analisar estas cinco etapas após negócio a montante anormal e mensagens são consistentes:

    execução da aplicação a montante for concluída, ou a aplicação a jusante realizada não falhou, ou seja, neste estado de transação base macia Teoria do Estado.

    serviço de mensagens ouvir para aplicações a jusante e executar MQ (segunda etapa)

    aplicações a jusante monitorar mensagem MQ e execução de negócios, e os resultados do serviço de notificação de mensagem consumidor para fontes confiáveis.

    Estado de confiança necessidades de serviços de mensagens e executar aplicações a jusante mensagem consistente, confiável quando o estado não for concluída, para garantir que a aplicação não é executada a jusante, o status de mensagens confiável está concluída, para garantir que a aplicação é realizada a jusante.

    FIG interacção entre a aplicação do serviço de mensagem a jusante e fiáveis como se segue:

  • aplicativos de mensagens MQ monitorar componentes a jusante e obter mensagens

  • O corpo da mensagem MQ informações do aplicativo jusante processamento de serviço local

  • ACK mensagem de reconhecimento enviada automaticamente para aplicações a jusante são MQ consumo componente

  • sistema de notificação de aplicação a jusante a mensagem de fontes de confiança foi sucesso consumo, mensagem de confiança muda o status da mensagem é concluída.

  • Todos os passos possíveis falhas, para analisar estas quatro etapas após a ocorrência de uma exceção se o status de negócio e mensagem consistente a jusante:

    Quando a análise acima pode falhar em duas etapas, a fim de assegurar que a consistência dos dados a jusante final em sistemas de mensagens fiáveis, uma necessidade de desenvolver reconhecimento mensagem de estado, e a mensagem de retransmissão, a fim de realizar duas funções Teoria BASE Características Eventualmente consistente.

    status da mensagem de confirmação

    Confiável serviço de mensagem de status da mensagem mensagem monitor de timer, se houver um tempo limite eo Estado está para ser confirmada, isso indica que a etapa de aplicação e troca de mensagens confiável montante em 4 ou 5 anormal.

    fontes confiáveis de informação transportar o corpo da mensagem do pedido de consulta se o serviço foi executado para iniciar aplicativos de upstream. aplicativos de upstream fornecer uma interface de consulta de notícias de negócios confiável aplicação retroactiva do estado, se o negócio bem-sucedido ele vai mudar o status da mensagem ter sido enviada, ou excluir a mensagem para garantir a consistência dos dados. processo específico é a seguinte:

  • Fontes fidedignas confirmam a mensagem de tempo limite de consulta de status para ser

  • O caso da aplicação de negócio a montante consultas executadas

  • O negócio não é realizado, em seguida, apagar a mensagem, para assegurar a consistência de serviço e serviços de mensagens confiáveis. Serviço é executado, para modificar o status da mensagem é enviada, e enviar a mensagem para o componente MQ.

  • A retransmissão mensagem

    Mensagem enviada a montante foi realizada referido pedido, para garantir que as próximas aplicações a jusante pode ser executado normalmente.

    Confiável status da mensagem serviço de mensagem encontrada serviço de mensagens confiável para a mensagem enviada e o passo do tempo limite anormal serviço de mensagens confiável, e disse aplicação a jusante, o que passo, serviços de mensagens confiáveis anormais são reencaminhadas para esta mensagem MQ ouvinte componentes para aplicações a jusante.

    Depois de ouvir esta mensagem de aplicações a jusante, negócios re-run no caso de idempotency garantia e mensagem de notificação de serviço de mensagens confiável tem sido com sucesso o consumo e, finalmente, garantir que os dados de aplicação a montante, aplicações a jusante de consistência eventual. processo específico é a seguinte:

  • serviços de mensagens confiáveis verificar regularmente o status de mensagens enviadas e tempo limite

  • entrega de mensagens confiável para o MQ mensagem de re-montagem

  • aplicações a jusante ouvir as mensagens, em condições de operações executadas re-idempotentes.

  • aplicações a jusante Fontes fidedignas informam que a mensagem tem vindo a servir com sucesso o consumidor.

  • E duas reconhecimento função mensagem de retransmissão através do estado da mensagem, a aplicação pode assegurar que a consistência final a montante, a jusante, e fiáveis de dados de aplicação de serviço de mensagens.

    Claro, o procedimento de acesso real, a intervenção manual é necessário introduzir funcional. Por exemplo, limitar o número de retransmissões introduzidas, mais do que o número de retransmissões da mensagem modificada para limitar a mensagem de morte, espera por intervenção manual.

    Substituindo caso de abertura, por fontes confiáveis programa consistência eventual, a primeira fase, antes de o status de pedido de alteração, o serviço para ser solicitação de serviço de mensagens confiável para salvar uma mensagem de confirmação. serviços de mensagens confiável para guardar a mensagem e retorno.

    ordens de serviço recebidas após a implementação das informações de negócios e retorno local para fontes confiáveis notificação negócio de serviços foi executado. Alterar as mensagens de serviço de mensagens de status e enviar mensagens para o middleware MQ.

    A segunda etapa, de ouvir as mensagens do MQ pontos sistema para ver se a integração tem aumentado, se não houver aumento dos pontos modificados, em seguida, a solicitação de serviço com fontes confiáveis. serviço de mensagens confiável recebe um pedido para o sistema de bônus vai mudar o status da mensagem é concluída.

    Aqui, tem sido introdução a como garantir a consistência dos dados através do serviço de mensagens confiável. No entanto, devido à introdução de uma mensagem de mensagens e fiáveis filas, apresentado alguma complexidade, por isso, é mais apropriado para a pilha de tecnologia de plataforma cruzada não é uniforme cena.

    Aqui, novamente introduzida no caso de uma pilha de tecnologia unificada, como resolver os dados método consistente por TCC.

    TCC (Try-Confirmar Cancelar)

    esquema de TCC é uma outra implementação da confirmação de duas fases protocolo, que envolve três módulos, o serviço principal, e do gerente atividades de empresa (colaboradores).

    Abaixo desta imagem está na Internet sobre o TCC ilustração mais clássico:

    A primeira etapa: serviços de negócios principais são invocados tentativa para operar todos os serviços de business e registrar todas as atividades do gerente de serviços de negócios. Quando tudo falhar, tentar uma empresa de serviços bem sucedida ou um serviço de negócio a partir de tentativa, entrar na segunda fase.

    A segunda fase: Atividade Manager para confirmar ou cancelar a implementação dos resultados das operações da tentativa de serviços de negócios baseados na primeira etapa. Se a primeira fase de todos os serviços de negócios são tentativa bem sucedida, em seguida, chamar confirmar a operação de todos os colaboradores de serviços de negócios, caso contrário, chamada cancelar todas as operações de serviços de negócios.

    Na segunda etapa, confirmar e cancelar também há falhas, de modo que você precisa fazer manipulação de exceção ambos os casos, a fim de garantir a consistência dos dados.

    • falha Confirmar: Todos confirmam a operação de reversão e executar cancelar a operação.

    • Anular falhou: Do serviço de negócios cancelar automaticamente a necessidade de fornecer mecanismos para garantir cancelar sucesso.

    Há um monte de estrutura baseada em RPC TCC, mas não se aplica a interativo modo HTTP arquitetura micro-serviços baseados em protocolo. Desta vez só discutir a TCC com base na implementação do protocolo HTTP. processo de implementação específica é a seguinte:

  • As principais chamadas de serviço de negócios operacional de serviços de negócios e tentar obter confirmar / cancelar interfaces e timeout.

  • Se o negócio é tentativa bem sucedida, os principais executa serviços de negócios de uma empresa local, e obter a confirmação / cancelar uma interface para enviar um gerente de campanha, gerente de campanha seria chamado na seqüência de operações 1 e solicitação de serviço 2 Interface de confirmar e status de registro, se pedido for bem sucedido, a notificação apresentada para os assuntos locais dos principais serviços empresariais. Se confirmar o fracasso parcial, o gerente do evento vai chamar a ação de um negócio e de empresa para cancelar a tentativa de interface 2 cancelar a encomenda.

  • Se isso falhar experimentar alguns ou todos os negócios, o principal negócio diretamente rollback e fim, e tentar sucesso de um serviço de negócio através das tarefas agendadas para completar, mas tentar acordo em dados de horas extras, estes dados fazem assegura processo de reversão que os principais serviços de negócios e dados consistentes de serviços de negócios.

  • Substituindo o caso mencionado no início, pelo TCC concretização, a ordem de execução de serviço pela operação de pré-integral (a tentativa) antes que as alterações de status ordem, e um pedido de confirmação de aquisição de endereço / cancelar antecipadamente pela integração da recompensa.

    Se o pré-aumento integração (tentativa) for bem sucedida, as ordens de serviço e status de pedidos gerente de eventos de notificação de alteração, a interface gerente do evento para confirmar o pedido para aumentar a integração dos módulos de integração.

    Se o pré-aumento integração (tentativa) falhar, os serviços de reversão ordens de negócios. Os serviços de integração através de tarefas pré-programadas, eliminando pontos (TRY) dados de tempo de espera.

    Além disso, se as chamadas gerente de eventos confirmar a interface falhou serviços de integração, ligue para a integração interface do gerenciador de eventos serviços cancelar cancelar pré-aumento integração, a fim de assegurar a coerência das ordens finais e integração de dados.

    Através da descrição de um serviço de mensagens confiável e um programa de TCC acima, nós resolvemos o problema da consistência dos dados em ambos os casos, a tecnologia de pilha de acordo e desacordo.

    No entanto, há geralmente uma grande quantidade de negócios adicionais nestes negócios principais, como quando o pagamento do usuário, você precisa notificar o usuário por meio de sucesso pagamento SMS.

    O sucesso ou o fracasso deste tipo de serviço não afetará o core business, e mesmo muitos grande plataforma Internet e, no caso de alta concorrência vai tomar a iniciativa de fechar este tipo de negócio, a fim de garantir a boa execução do core business. Então, como lidar com tais situações, vamos dar uma olhada melhor para informar programa.

    Melhor para informar

    Melhor para informar programa envolve três módulos:

    • aplicativos de upstream , A mensagem da fila do MQ.

    • aplicações a jusante (Por exemplo, SMS, serviço de e-mail), aceite o pedido e retorna a notificação do resultado.

    • Melhor Serviço de Notificação de esforços , Ouvir fila de mensagens, a mensagem é armazenada no banco de dados, e enviar uma notificação para chamar a regra de notificação de interface de acordo com a aplicação a jusante.

    processo específico é a seguinte:

  • A montante da aplicação envia uma mensagem para o MQ MQ compreendendo montagem regras de notificação e uma mensagem endereços de notificação

  • Melhor para ouvir o serviço de notificação de mensagem no MQ, regras de notificação analisar e colocar em uma espera fila para uma notificação de atraso gatilho

  • Melhor para informar serviço jusante endereço de notificação de chamada, se a chamada for bem sucedida, a mensagem é marcada como notificação de sucesso, se o caso não cumprir as regras de notificação (por exemplo, 5 minutos cabelo uma vez enviou um total de 10 vezes) de volta para a fila de atraso esperando o próximo gatilho.

  • Melhor para expressar serviço de notificação sem afetar o negócio principal, tanto quanto possível para garantir a consistência dos dados. Ele exige que os desenvolvedores para especificar regras de notificação com base em negócios, a premissa de encontrar regras de notificação para garantir a consistência dos dados, tanto quanto possível, a fim de cumprir o propósito dos maiores esforços.

    Os diferentes serviços podem ser personalizados de regras de notificação diferentes, tal como notificar o resultado do pagamento e outros serviços relativamente estrita, a frequência de notificação pode ser definido superior, notificação de tempo mais longo, notificação, como a cada 5 minutos para 1 hora.

    Se o negócio não é importante, tal como notificar o aumento pontos do usuário, você pode definir a frequência de notificação é menor, tempo mais curto, como 10 minutos notar uma vez, por 30 minutos.

    Em nome do acima informa mensagem de sucesso de pagamento mencionados o usuário nesse caso, o esforço máximo para notificar o programa, quando o pagamento for bem sucedida, irá enviar uma mensagem para MQ middleware, em uma mensagem, enviar as regras definidas em 5 minutos, enviou o número máximo de 10 vezes .

    Melhor para informar mensagem ouvintes MQ e serviço de notificação de mensagem de serviço de chamada (Short Message Service) mensagens de interface de acordo com as regras e informações de log registro sobre cada chamada. Ao notificar o sucesso ou notificou 10 vezes, aviso de parada.

    nó Total *

    Detalhes do caso por parte do acima de três cenários que resolver inconsistências de dados entre micro e serviços, abaixo, fornece uma base simples que você escolher a solução certa através de um gráfico de comparação simples.

    Mais artigos técnicos secar bens, uma chave Geek Pesquisa: https: //s.geekbang.org/

    Demanda determina a arquitetura, que é a causa da micro bombeiros, a infra-estrutura mais larga escala está se tornando vantagens cada vez mais evidente, implantação e escalabilidade flexível e eficiente, mas também tem algumas deficiências menores, se você está hesitante para colocar em uso, é melhor QCon 2017 Shanghai olhada Amazon como um pioneiro neste campo é como construir e evolução dentro da arquitetura do sistema. Além disso, a prática da arquitectura, bem como Google, Twitter, Intel e outras empresas.

    Clique em Leia o original Grande café e Tecnologia Zero, treinamento técnico. Se houver algum problema no processo de registro, entre em contato com o gerente bilhete Hanna, Tel: 15110019061, micro carta: QCon-0410.

    Os autores introduzem

    cordeiro Aoyagi arquiteto de nuvem, agora está servindo a equipe Digital Aoyagi nuvem, especializada em planejamento de projetos de grande escala, arquitetura micro-serviço e arquitetura distribuída.

    su Huai , Micro sinal Sulaohuai, Aoyagi, diretor de pesquisa e desenvolvimento em nuvem, agora está servindo a equipe Digital Aoyagi nuvem, trabalhou na Oracle, Singapore Telecom e outras empresas. Ela é especializada em tecnologia de recipiente, arquitetura micro-service, desenvolvimento ágil e gestão técnica.

    texto recomendou hoje

    Clique abaixo para ler a imagem

    Gado principais empresas de tecnologia porque não CTO?

    "TFBOYS '' Notícias 190324 Nenhum sangue por alguns anos, você está familiarizado com Wang Junkai volta
    Anterior
    "Saber não" pequena raiva pública por causa de ciúme ódio Gu Ye Ye Ting, Gu dois conjuntos colapso? Amigos disseram que tinha abandonado o drama
    Próximo