Commit de duas fases (2pc)

Definição - O que significa o Two-Phase Commit (2PC)?

Uma confirmação de duas fases é um protocolo padronizado que garante que uma confirmação de banco de dados seja implementada na situação em que uma operação de confirmação deve ser dividida em duas partes separadas.

No gerenciamento de banco de dados, salvar alterações de dados é conhecido como confirmação e desfazer alterações é conhecido como reversão. Ambos podem ser alcançados facilmente usando o log de transações quando um único servidor está envolvido, mas quando os dados são espalhados por servidores geograficamente diversos em computação distribuída (ou seja, cada servidor sendo uma entidade independente com registros de log separados), o processo pode se tornar mais complicado .

Definirtec explica o Two-Phase Commit (2PC)

Um objeto especial, conhecido como coordenador, é necessário em uma transação distribuída. Como o próprio nome indica, o coordenador organiza as atividades e a sincronização entre os servidores distribuídos. O commit de duas fases é implementado da seguinte maneira:

Fase 1 - cada servidor que precisa confirmar dados grava seus registros de dados no log. Se um servidor não for bem-sucedido, ele responderá com uma mensagem de falha. Se for bem-sucedido, o servidor responde com uma mensagem OK.

Fase 2 - Esta fase começa após todos os participantes responderem OK. Em seguida, o coordenador envia um sinal para cada servidor com instruções de confirmação. Após a confirmação, cada um grava a confirmação como parte de seu registro de log para referência e envia ao coordenador uma mensagem de que sua confirmação foi implementada com sucesso. Se um servidor falhar, o coordenador enviará instruções a todos os servidores para reverter a transação. Após a reversão dos servidores, cada um envia um feedback de que isso foi concluído.