Arquitecturas Tolerantes a faltas em Sistemas Distribuídos Replicação de Servidores Transacções Atómicas Protocolos de Replicação Replicação passiva vs. activa Replicação de máquinas de estados vs. Replicação com operações de Leitura/Escrita (registos) Page 1 1
Replicação Passiva vs. Activa Replicação Passiva ( primary-backup ) - existe um servidor principal com que os clientes interactuam. Os restantes servidores estão de reserva (backups), de forma a que, quando detectam que o servidor primário falhou, um deles torna-se o primário; Recuperação da falta Replicação Activa sem existir controlo centralizado, todos os servidores recebem pela mesma ordem os pedidos dos clientes, efectuam a operação, determinam qual o resultado correcto por votação, e respondem ao cliente. Compensação da falta Replicação de máquinas de estados vs. leituras/escritas Replicação de máquinas de estados Réplicas são máquinas de estados determinísticas Operações arbitrárias (qualquer serviço determinístico) Algoritmo de replicação garante que todas réplicas executam a mesma sequência de operações (pedidos) Replicação com operações de Leitura/Escrita ( registo ) Suporta duas operações: Leitura e escrita de um objecto (registo) val = read( ); ack = write(new_val); Menos genérico (interface muito restrita) Algoritmos de replicação mais simples: apenas têm de garantir acordo eventual no último valor escrito Page 2 2
Replicação de máquinas de estados vs. leituras/escritas Especificações (comportamento esperado do sistema replicado) Leituras/Escritas: operação read tem de retornar o último valor escrito E quando há escritas concorrentes? Neste caso existem várias semânticas diferentes Para simplificar vamos deixar por especificar Replicação de máquinas de estados: sistema replicado deve ser equivalente (do ponto de vista dos clientes) a um servidor centralizado que nunca falha, e que executa os pedidos sequencialmente por uma ordem por ele determinada, consistente com a ordem em que são emitidos Replicação Passiva Cliente Servidor Principal Servidor Secundário Page 3 3
Protocolo Simples Replicação Passiva (Replicação Máquina de Estados) P1: servidor primário P2: servidor secundário Quando P1 recebe um pedido: Processa-o e actualiza o seu estado interno Envia uma mensagem update a P2 Responde ao cliente, sem esperar pela resposta de P2 P2 actualiza o seu estado quando recebe as mensagens update de P1 P1 envia a P2 mensagens I m alive cada P unidades de tempo Se P2 não receber uma mensagem I m alive após expirar um temporizador, torna-se o primário: Avisa os clientes Começa a processar os pedidos Protocolo Simples de Replicação Passiva c 1 3 P s 1 4 Mensagens de Prova de vida 2 s 2 t max timeout =? Em que instante s2 pode assumir que é o primário? Page 4 4
Pressupostos Sistema síncrono: A comunicação é fiável (o transporte recupera de faltas temporárias de comunicação e não há faltas permanentes); Pode definir-se um limite para o tempo máximo de transmissão de uma mensagem na rede (t max ) e para o respectivo processamento; A rede assegura uma ordem FIFO na comunicação Relógios das máquinas estão sincronizados (ou, pelo menos, as respectivas velocidades) Servidores podem ter faltas por paragem silenciosa (crash) O que pode acontecer se falharem estes pressupostos? Custos da Replicação Passiva Grau de replicação: número de servidores usados para implementar o serviço Tempo de resposta (blocking time): tempo máximo entre um pedido e a sua resposta, no período sem falhas Tempo de recuperação (failover time): Tempo desde falha do primário até cliente ser notificado do novo primário Objectivo: assumindo que f componentes podem falhar, minimizar o grau de replicação, tempo de resposta e tempo de recuperação. Page 5 5
Protocolo Simples de Replicação Passiva Custos Grau de replicação: óptimo (f+1 réplicas toleram f faltas) Tempo de resposta: 2*t max (ignorando tempo de processamento) Tempo de recuperação: P+3*t max (desde falha até cliente ser notificado) Protocolos de Quóruns Replicação activa Replicação com operações de Leitura/Escrita Menos genérico do que o anterior Pressupostos: Falhas por paragem (crash) Sistema assíncrono, falhas na comunicação Requer 2f+1 réplicas para tolerar f falhas dos nós servidores Page 6 6
Protocolos de Quóruns Sistema de Quóruns: conjunto de sub-conjuntos das réplicas, tal que quaisquer dois sub-conjuntos se intersectam. Por exemplo: N réplicas Quórum: qualquer maioria: Q >N/2 Cada réplica guarda: valor do objecto (registo) respectivo timestamp Protocolos de Quóruns Operação de Leitura Envia pedido de leitura para todas as réplicas (retransmitindo-o até concluir a operação, para colmatar falhas temporárias na rede) Ao receber pedido, réplica responde ao cliente com valor actual de <val,ts> Cliente aguarda resposta de um quórum Escolhe valor associado ao maior timestamp Page 7 7
Protocolos de Quóruns Operação de Escrita (2 fases leitura e escrita) Efectua pedido de leitura a todas as réplicas (ler timestamp actual) Aguarda resposta de um quórum Escolha o maior timestamp, t, e incrementa Efectua um um novo pedido a todas as réplicas para escrever <novo-val, t+1> (Servidores respondem ack, e apenas guardam novo-val se o timestamp for maior do que o actual) Cliente aguarda acknowledge de um quórum Problema: Duas escritas concorrentes podem escolher o mesmo timestamp Solução: timestamp = <Nº seq., client-id> Exemplo (Protocolos de Quóruns) c c calcula t 1 = <t 0.seq#+1, cid> r1 x r1 r2 r3 x r2 r3 Fase de Leitura Lê <v 0,t 0 > Fase de Escrita Escreve <v 1,t 1, > Oper. de Leitura Lê <v 1,t 1 > Oper. de Escrita do valor v 1 Page 8 8
Replicação de Máquinas de Estados em Sistemas Assíncronos Protocolos bastante complexos. Exemplo: Paxos Combina técnicas dos protocolos anteriores Servidor primário determina ordem global dos pedidos e notifica um quórum dos secundários dessa ordem Quando o primário falha dá-se um protocolo de view-change para eleger um novo primário A view-change conclui quando há acordo, por parte de um quórum, sobre o novo primário Mais detalhes em: L. Lamport, The part-time parliament. In ACM Transactions on Computer Systems Page 9 9