Junior — Middle
Como implementar a gestão transacional num sistema distribuído?
sobes.tech IA
Resposta da IA
Num sistema distribuído, a gestão de transações é implementada através de protocolos que garantem a coerência e a atomicidade das operações em múltiplos nós. Uma das abordagens mais comuns é o protocolo de commit de duas fases (2PC).
Princípio de funcionamento do 2PC:
- O coordenador envia uma solicitação de preparação (prepare) a todos os participantes.
- Cada participante realiza uma verificação local e responde com "pronto" ou "recusado".
- Se todos estiverem prontos, o coordenador envia a ordem de commit, caso contrário, realiza um rollback.
- Os participantes executam commit ou rollback em conformidade.
Em Go, pode-se usar contextos e canais para coordenação e tempos limite. Existem também bibliotecas e frameworks que implementam transações distribuídas.
Outras abordagens incluem:
- O protocolo de commit de três fases (3PC) para aumentar a fiabilidade.
- O uso de operações idempotentes e transações de compensação (Sagas) para consistência eventual.
Exemplo de esquema simplificado de 2PC em Go (pseudo-código):
func coordenador(participants []Participant) error {
for _, p := range participants {
if !p.Preparar() {
rollbackAll(participants)
return errors.New("falha na preparação")
}
}
for _, p := range participants {
p.Commit()
}
return nil
}