Protocolo 2PC:garantindo a consistência dos dados em sistemas distribuídos
O protocolo
2pc (commit bifásico) é um protocolo de confirmação transacional
Usado em sistemas distribuídos
Para garantir
atomicidade e
durabilidade de transações envolvendo vários nós. Em termos mais simples, garante que todos os nós participantes cometam com sucesso a transação ou voltem completamente a ele, evitando inconsistências.
Aqui está como funciona:
Fase 1:Prepare a fase 1.
nó do coordenador: O nó do coordenador, responsável por coordenar a transação, envia um "
preparar "Mensagem para todos os nós participantes.
2.
nós participantes: Cada nó participante recebe a mensagem "Prepare". Se puder executar com sucesso a transação, ele escreve a transação para o seu log local e envia um "
pronto "Mensagem de volta ao coordenador. Se não puder, envia um"
não pronto " mensagem.
3. Avaliação do coordenador
: O coordenador aguarda respostas de todos os participantes. Se todos os nós responderem com "Ready", ele prosseguirá para a segunda fase. Se mesmo um nó responder com "não pronto", aborta a transação e envia um "
abortar "Mensagem para todos os participantes.
Fase 2:Fase de confirmação 1. Decisão de coordenador
: Se todos os nós estiverem prontos, o coordenador enviará um "
commit "Mensagem para todos os nós participantes.
2.
Ações dos participantes: Cada nó participante recebe a mensagem "Commit". Se ele recebeu uma mensagem "pronta" na fase anterior, ele comete a transação aplicando as alterações ao seu banco de dados. Se recebeu uma mensagem "abort", ele revira a transação desfazendo as alterações.
3. Conclusão do coordenador
: O coordenador marca a transação, conforme concluído em seu log após receber confirmação de todos os participantes.
Vantagens de 2pc: *
garante atomicidade e durabilidade: Todos os nós participantes cometem ou abortam a transação, impedindo inconsistências.
*
lida com falhas do nó: Se um nó falhar durante a fase de preparação, o coordenador aborta a transação. Se um nó falhar durante a fase de confirmação, o coordenador ainda poderá concluir a transação enquanto os outros nós estiverem disponíveis.
Desvantagens de 2pc: *
Gargrado de desempenho: O coordenador atua como um único ponto de falha.
*
Operações de bloqueio: Os nós são bloqueados durante a fase de preparação, o que pode afetar o desempenho.
*
Complexidade: 2PC é um protocolo complexo com várias etapas e sobrecarga de comunicação.
alternativas a 2pc: *
comprometimento trifásico (3pc): Melhora em 2pc, introduzindo uma fase intermediária para mitigar o problema único do ponto de falha.
*
paxos: Outro protocolo de consenso distribuído, conhecido por sua tolerância e eficiência de falhas.
Use casos: 2PC é comumente usado em aplicações em que a consistência dos dados é crucial, como:
*
Transações financeiras: Garantindo que os fundos sejam transferidos corretamente entre as contas.
*
Gerenciamento de banco de dados: Garantir a integridade dos dados em vários bancos de dados.
*
e-commerce: Manter níveis consistentes de inventário e processamento de pedidos.
No geral, o 2PC é uma ferramenta valiosa para garantir a consistência dos dados em sistemas distribuídos, mas sua complexidade e potenciais gargalos de desempenho devem ser considerados.