O passado e o presente das transações distribuídas


1. O que é uma transação

         Transação geralmente se refere a algo a ser feito ou feito. Em termos de computador, refere-se a uma unidade (unidade) de execução de programa que acessa e pode atualizar vários itens de dados no banco de dados. As transações são geralmente causadas pela execução de programas do usuário escritos em linguagens de manipulação de banco de dados de alto nível ou linguagens de programação (como SQL, C ++ ou Java) e são definidas por instruções como iniciar a transação e finalizar a transação (ou função chamadas). Uma transação consiste em todas as operações realizadas entre o início e o final da transação.

     (1) Quatro características dos negócios

        Atomicidade: Atomicidade significa que a transação é uma unidade indivisível de trabalho e as operações na transação acontecem todas ou nunca acontecem.

        Consistência: quando a transação é concluída, todos os dados devem estar em um estado consistente. No banco de dados relevante, todas as regras devem ser aplicadas à modificação da transação para manter a integridade de todos os dados (exemplo: transferência, o saldo de duas contas é adicionado, o valor permanece inalterado).

        Isolamento: quando vários usuários acessam o banco de dados simultaneamente, a transação de um usuário não pode ser interferida pelas transações de outros usuários e os dados entre várias transações simultâneas devem ser isolados uns dos outros.

        Persistência: depois que uma transação é confirmada, seu impacto no banco de dados é permanente.

    (2) O nível de isolamento da transação

          Leitura suja: uma transação pode ler os dados de outra transação não confirmada.

          Leitura não repetível: ou seja, uma transação só pode ler dados após a confirmação de outra transação. Os dados são lidos várias vezes em uma transação, mas outra transação executa uma operação de atualização entre as duas leituras, resultando em dados inconsistentes que podem ser lidos duas vezes na mesma transação.

          Leitura mágica: Existem duas transações A e B; a transação A executa primeiro as operações de atualização em lote nos dados da tabela, a transação B executa as operações de inserção na tabela e A executa as operações de consulta na tabela. Como resultado, aparecem dados não atualizados. Como uma alucinação

        Leia não confirmado: Leia não confirmado. Ocorrerão leituras sujas, leituras não repetíveis e leituras fantasmas.

        Leia confirmada: Leia confirmada. Haverá leituras não repetíveis, leituras fantasmas.

        Leitura repetível: leitura repetida. Haverá uma leitura fantasma.

        Serializável: o banco de dados foi projetado para ser de segmento único. Pode evitar todos os problemas acima

2. O que é uma transação distribuída?
     Simplificando, as transações distribuídas são usadas para garantir a consistência dos dados entre os diferentes nós em um sistema distribuído.

3. Por que usar
     cenários de transação distribuída : Com o desenvolvimento da Internet, a maioria das empresas de Internet dividirá o sistema em serviços e a servitização do sistema se tornou cada vez mais popular. Clientes fazem pedidos, clientes pagam e fazem pedidos O sistema fez um pedido com sucesso para gerar um pedido, mas o serviço de estoque em linha precisa deduzir a operação de estoque. Se a dedução de estoque for anormal, como garantir a consistência dos dados entre os dois serviços do sistema? Portanto, o uso de transações distribuídas é iminente

Quatro. Conhecimento teórico de transações distribuídas

   (1) Teoria CAP
        C: Consistência (Consistência) O cliente sabe que algumas operações terão efeito ao mesmo tempo.

        R: Disponibilidade (disponibilidade) Cada operação deve terminar com um resultado previsível.

        P: Tolerância de partição (tolerância de partição) Mesmo se um único componente não estiver disponível, a operação ainda pode ser concluída.

        Cap três é geralmente difícil de alcançar todos, geralmente escolha dois dos três, cp ou ap, mas em geral as empresas de Internet geralmente sacrificam consistência forte em troca de consistência fraca em troca de alta disponibilidade (AP)

xa (consistência forte de transação global)

   (2) Teoria BASE

       A consistência e a usabilidade da tampa são avaliadas. A ideia central é que, mesmo que não seja possível atingir uma consistência forte, cada aplicativo pode adotar um método apropriado para tornar o sistema eventualmente consistente de acordo com suas próprias características de negócios.

      BA: Basicamente utilizável.Em caso de força maior, 'disponibilidade' ainda pode ser garantida, e um resultado claro (a diferença entre disponibilidade básica e alta disponibilidade) ainda pode ser devolvido mesmo dentro de um determinado período de tempo.
     S Estado flexível Os diferentes estados de cópia dos mesmos dados podem não precisar ser consistentes em tempo real.

     E. Eventualmente, o status consistente de diferentes cópias dos mesmos dados pode não precisar ser consistente em tempo real, mas deve-se garantir que eles ainda sejam consistentes após um determinado período de tempo.

     equilíbrio de pH

     ACID é ácido, Base é alcalino, a escolha entre ACID e Base no cenário de desenvolvimento é o equilíbrio ácido-base

   (3) Conceitos de envio em dois estágios (2PC) e três estágios (3PC)

   V. Implementação de transações distribuídas

   (1) protocolo xa

      Consistência de transação global forte

   (2) Entrega confiável de mensagens mq (conforme mostrado na figura abaixo)

      

   (3) O método TCC de 2pc realiza a transação distribuída (exemplos de código específicos serão suplementados e lançados no github posteriormente) O
    método Tcc realiza a transação distribuída (a fase de teste foi bem-sucedida, a confirmação foi bem-sucedida por padrão)

   fase de tentativa

confirmar estágio

cancelar fase

       

      endereço da estrutura de origem tcc  https://github.com/changmingxie/tcc-transaction

       Endereço da estrutura do código-fonte easyTransaction  https://github.com/QNJR-GROUP/EasyTransaction

       Endereço da estrutura de transação distribuída hmily: https://github.com/Dromara/hmily         

   (4) Consistência global

     Realizado no nível do servidor, como o uso de Alibaba Cloud e Tencent Cloud para alcançar consistência global

    

Acho que você gosta

Origin blog.csdn.net/aazhzhu/article/details/100344555
Recomendado
Clasificación