consistÊncia e consenso - inf.ufpr.br · o teorema cap datacenter 1 datacenter 2 quebra da rede...
TRANSCRIPT
CONSISTÊNCIA E CONSENSOCONSISTÊNCIA E CONSENSOCONSTRUINDO SISTEMAS DISTRIBUÍDOSCONSTRUINDO SISTEMAS DISTRIBUÍDOS
TOLERANTES A FALHASTOLERANTES A FALHASAluísio Augusto Silva Gonçalves
17 de maio de 2018
CONTEÚDOCONTEÚDORecapitulandoGarantias de consistênciaLinearizabilidadeGarantias de ordenaçãoTransações DistribuídasConsensoAssociação e coordenaçãoSumárioQuestões
RECAPITULANDORECAPITULANDO
PROBLEMAS COM SISTEMASPROBLEMAS COM SISTEMASDISTRIBUÍDOSDISTRIBUÍDOS
Comunicação: atraso/reordenação/duplicação/perdade pacotesOrdenação: relógios imprecisos ou dessincronizadosDisponibilidade: nodos podem pausar ou falhar aqualquer momento
GARANTIAS DEGARANTIAS DECONSISTÊNCIACONSISTÊNCIA
ATRASO DE REPLICAÇÃOATRASO DE REPLICAÇÃO
Usuário 3
BD 1
BD 2
Usuário 1
Usuário 2
leia 'k'
'k': 12
escreva 'k': 13
ok
replique 'k': 13
leia 'k''k': 13
leia 'k' 'k': 12
Mesmo instante, nodos diferentes, dados diferentes.
MODELOS DE CONSISTÊNCIAMODELOS DE CONSISTÊNCIAConsistência eventual
Em algum momento após uma escrita, todos osnodos terão o mesmo dado.
LinearizabilidadeApós uma escrita, todas as leituras (em qualquernodo) retornam o valor escrito.
LINEARIZABILIDADELINEARIZABILIDADE
OBJETIVOOBJETIVOFazer parecer que há apenas uma cópia dos dados,
abstraindo da aplicação/usuário a existência de réplicas(e os problemas que vêm com elas).
Todas as leituras e escritas podem ser mapeadas parauma única linha do tempo.
UTILIDADEUTILIDADELocksRestrição de unicidadeInteração entre sistemas
CONDIÇÕESCONDIÇÕESApós a conclusão de uma escrita, todas as leiturasretornam o valor novo
Mas e durante a escrita?
Após uma leitura do valor novo, todas as leiturasseguintes também retornam o valor novo
Ou seja, as operações são atômicas
IMPLEMENTANDO SISTEMASIMPLEMENTANDO SISTEMASLINEARIZÁVEISLINEARIZÁVEIS
Tenha apenas uma cópia dos dados, isto é, não utilizereplicação
1.
Utilize um mecanismo de replicação linearizável2.
REPLICAÇÃO LINEARIZÁVELREPLICAÇÃO LINEARIZÁVELReplicação com líder único (possivelmentelinearizável)
Isolamento por snapshot não é linearizávelRequer replicação síncrona
Replicação por consenso (linearizável)
Inclui medidas para evitar os problemas dareplicação com líder único
REPLICAÇÃO LINEARIZÁVELREPLICAÇÃO LINEARIZÁVELReplicação multi-líder (não linearizável)
Escritas em paralelo com replicação assíncronapodem levar à conflitos
Replicação sem líder (provavelmente não-linearizável)
Quórum não é afetado por atraso de replicação,mas leituras sãoOrdenação por relógio físico/time-of-day podenão ser a ordem real dos eventos
O TEOREMA CAPO TEOREMA CAPDatacenter 1 Datacenter 2
quebra da rede
Consistência OU disponibilidade quando particionado.
O TEOREMA CAPO TEOREMA CAPSe a aplicação requer linearizabilidade, e algumasréplicas perdem acesso às outras, as réplicas setornam indisponíveis para o processamento derequisições.Se a aplicação não requer linearizabilidade, e algumasréplicas perdem acesso às outras, requisições aindapodem ser processadas independentemente, ao custoda linearizabilidade.
LINEARIZABILIDADE E REDESLINEARIZABILIDADE E REDESINSTÁVEISINSTÁVEIS
Linearizabilidade reduz o desempenho de um sistemaO tempo de resposta em um sistema linearizável éproporcional à incerteza sobre os atrasos na redeAlta variabilidade ⇒ maior tempo de resposta
GARANTIAS DEGARANTIAS DEORDENAÇÃOORDENAÇÃO
ORDEM É IMPORTANTEORDEM É IMPORTANTEO líder na replicação com líder único determina aordem na qual seus seguidores executam operações deescritaSerializabilidade garante que transações sãoexecutadas como-se fossem executadas em algumaordem sequencialRelógios são um modo de ordenar escritas
ORDEM E CAUSALIDADEORDEM E CAUSALIDADECausalidade é uma ordenação parcial
Uma pergunta acontece antes de sua respostaA criação de um registro acontece antes de suamodificaçãoDuas mensagens simultâneas de usuários diferentesnão podem ser ordenadas (são concorrentes)
Sistemas que respeitam essa ordenação causal sãocausalmente consistentes
ORDEM E LINEARIZABILIDADEORDEM E LINEARIZABILIDADELinearizabilidade é uma ordenação total
Todos os eventos ocorrem em uma única linha dotempoNão existem eventos concorrentes (ou seja, não-ordenáveis)
Linearizabilidade implica em consistência causal
CAUSALIDADE ECAUSALIDADE ELINEARIZABILIDADELINEARIZABILIDADE
Consistência causal é uma garantia mais fraca quelinearizabilidadeO teorema CAP não se aplica à sistemas apenascausalmente consistentesO tempo de resposta de sistemas apenas causalmenteconsistentes não depende diretamente da qualidadeda rede
RASTREANDO DEPENDÊNCIASRASTREANDO DEPENDÊNCIASCAUSAIS COM NÚMEROS DECAUSAIS COM NÚMEROS DE
SEQUÊNCIASEQUÊNCIAAssocia-se um número de sequência à cada chave,que é incrementado com cada modificaçãoNúmeros de sequência impõem uma ordenação total:
Operações ordenáveis causalmente mantém estaordemOperações concorrentes são ordenadas em algumaordem
GERANDO NÚMEROS DEGERANDO NÚMEROS DESEQUÊNCIASEQUÊNCIA
Quando há um líder único: o líder incrementa onúmero associado à chave após uma escritaEm outros casos:
Geração de sequências disjuntas de números pornodoTimestamps de alta resoluçãoPré-alocação de lotes de números de sequência pornodoNenhum destes é causalmente consistente!
ORDEM TOTAL DE LAMPORTORDEM TOTAL DE LAMPORTNodos e clientes mantêm um contador individualCada requisição inclui o contador do clienteCada resposta inclui um par (contador do nodo, ID do nodo) ← timestamp da operaçãoAo receber uma requisição ou resposta com contadormaior que o seu próprio, este é incrementado paraalém do que foi recebido
ORDEM TOTAL DE LAMPORTORDEM TOTAL DE LAMPORT
BD 1
BD 2
Usuário 1
Usuário 2
cmax = 0
c = 1
(1, 2)
cmax = 1
c = 2
(2, 2)
cmax = 2
c = 3
(3, 2)
cmax = 3
c = 5
(5, 2)
cmax = 0
c = 1
(1, 1)
c = 4
cmax = 1
(4, 2)
cmax = 4
c = 5
(5, 1)
Dependências causais resultam em um incremento docontador
ORDENAÇÃO DE ORDENAÇÃO DE TIMESTAMPSTIMESTAMPS DE DELAMPORTLAMPORT
Ordenação total é possível através do par (contador do nodo, ID do nodo)A ordenação só pode ser feita com conhecimento dasoperações de todos os nodos
Não é o bastante para garantir unicidade
BROADCASTBROADCAST DE ORDENAÇÃO TOTAL DE ORDENAÇÃO TOTAL/ / BROADCASTBROADCAST ATÔMICO ATÔMICO
Entrega confiávelSe uma mensagem é entregue à qualquer nodo,então ela é entregue à todos os nodos
Entrega totalmente ordenadaMensagens são entregues à todos os nodos namesma ordem
Estas propriedades devem ser sempre mantidas, ouatingidas eventualmente no caso de falhas na rede ou em
algum nodo.
BROADCASTBROADCAST ATÔMICO - UTILIDADE ATÔMICO - UTILIDADEConsensoConsistência entre réplicas (salvo atraso de replicação)Transações serializáveisLog de operações/replicação/transações/write-aheadServiço de lock
LINEARIZAÇÃO DE ESCRITAS COMLINEARIZAÇÃO DE ESCRITAS COMBROADCASTBROADCAST ATÔMICO ATÔMICO
Estudo de caso: reivindicando um nome de usuário
Envie uma mensagem reivindicando o nome deusuário desejado.
1.
Aguarde o recebimento desta mesma mensagem.2. Caso alguma outra reivindicação seja recebida nesseínterim, desista.
3.
Do contrário, a operação foi concluída com sucesso.4.
Todos os nodos concordam sobre quais operaçõesocorreram e sua ordem.
LINEARIZAÇÃO DE LEITURAS COMLINEARIZAÇÃO DE LEITURAS COMBROADCASTBROADCAST ATÔMICO ATÔMICO
Opção 1, usando broadcast atômico para marcar umaposição no tempo:
Envie uma mensagem qualquer.1. Aguarde a mensagem retornar.2. Efetue a leitura.3.
LINEARIZAÇÃO DE LEITURAS COMLINEARIZAÇÃO DE LEITURAS COMBROADCASTBROADCAST ATÔMICO ATÔMICO
Opção 2, caso as mensagens sejam indexadas:
Obtenha o índice da última mensagem recebida.1. Aguarde até que todas as mensagens com índicemenor sejam recebidas.
2.
Efetue a leitura.3.
LINEARIZAÇÃO DE LEITURAS COMLINEARIZAÇÃO DE LEITURAS COMBROADCASTBROADCAST ATÔMICO ATÔMICO
Opção 3, faça a leitura em uma réplica síncrona.
BROADCASTBROADCAST ATÔMICO COM ATÔMICO COMLINEARIZAÇÃOLINEARIZAÇÃO
Execute uma operação incremente-e-leia em umcontador linearizado.
1.
Use o valor lido como número de sequência.2. Envie a mensagem para todos os nodos, re-enviandoem caso de perda.
3.
Ao receber uma mensagem, aguarde até ter entregue àaplicação a mensagem com contador imediatamenteanterior antes de entregar a mensagem atual.
4.
TRANSAÇÕESTRANSAÇÕESDISTRIBUÍDASDISTRIBUÍDAS
COMMITCOMMIT ATÔMICO DISTRIBUÍDO ATÔMICO DISTRIBUÍDOEm um único nodo, o SGBD escreve as alterações em um
log e marca a transação como finalizada no log. Casohaja uma falha antes da marcação ser gravada com
sucesso, a transação é revertida.
Mas e quando múltiplos nodos estão envolvidos? Porexemplo, nodos com partes distintas dos dados (banco
de dados particionado)?
COMMITCOMMIT EM DUAS FASES (2PC) EM DUAS FASES (2PC)Objetivo: garantir que ou todos os nodos fazemcommit, ou todos abortam a transaçãoRequer um novo componente da aplicação: ocoordenador ou gerenciador de transações
Pode ser parte do cliente ou um serviço separado
2PC - ALGORITMO2PC - ALGORITMOA aplicação solicita ao coordenador uma transação.1. A aplicação escreve os dados, então solicita aocoordenador que faça commit da transação.
2.
O coordenador envia um aviso de preparação aosnodos envolvidos (participantes) na transação.
3.
O coordenador aguarda as respostas de todos osnodos participantes quanto a ser possível prosseguir.
4.
Caso todos indiquem ser possível o commit, umamensagem de commit é enviada. Do contrário, atransação é abortada.
5.
2PC - EXEMPLO2PC - EXEMPLO
BD 1
BD 2
Coordenador
escrita de dados
ok
escrita de dados
ok
preparação
sim sim
lock
ok
commit
ok
lock
Exemplo de uma execução com sucesso do commit emduas fases
2PC - PONTOS SEM VOLTA2PC - PONTOS SEM VOLTAUm nodo participante que responda Sim aocoordenador após uma solicitação de preparaçãogarante que pode fazer commit da transação (mesmoque o nodo venha a falhar);
1.
A decisão tomada pelo coordenador após a fase depreparação é imutável.
2.
2PC - FALHA DO COORDENADOR2PC - FALHA DO COORDENADORCaso o coordenador falhe antes da fase de preparação,os participantes podem abortar a transaçãoCaso o coordenador falhe antes da fase de commit, osparticipantes devem aguardar a volta do coordenador
A transação é mantida em um estado indeciso até lá,sem ser abortada nem ser feito commitQuaisquer locks obtidos para a transação precisamser mantidos
2PC - FALHA DO COORDENADOR2PC - FALHA DO COORDENADORCaso o coordenador não consiga decidir se deve
prosseguir uma transação (p.ex. se o log for perdido oucorrompido), as transações não-decididas se tornam
órfãs, requerendo intervenção manual.
COMMITCOMMIT EM TRÊS FASES EM TRÊS FASES2PC tem no coordenador um ponto único de falha3PC introduz uma fase de pré-commit e timeouts deoperação
Uso de timeouts impede a garantia de atomicidade
TRANSAÇÕES DISTRIBUÍDASTRANSAÇÕES DISTRIBUÍDASHETEROGÊNEASHETEROGÊNEAS
Transações distribuídas internas a um SGBD podemutilizar protocolos e otimizações específicos àquelatecnologiaTransações distribuídas envolvendo sistemas distintossão mais complicadas
EXEMPLO: PROCESSAMENTOEXEMPLO: PROCESSAMENTOÚNICO DE MENSAGENSÚNICO DE MENSAGENS
Em uma mesma transação:
Marque a mensagem como processada na fila demensagensProcesse a mensagem
Requer que todos os sistemas envolvidos suportem2PC
Caso haja algum erro, a transação é abortada e oprocessamento revertido. Assim, garante-se que cada
mensagem é processada exatamente 1 vez.
TRANSAÇÕES XATRANSAÇÕES XAX/Open eXtended ArchitectureEspecificação para 2PC sobre sistemas heterogêneos
Menor denominador comum: sem detecção dedeadlocks, sem suporte a isolamento por snapshotserializável…
API para interface com coordenadores de transaçãoPara uso por drivers ou bibliotecas
CONSENSOCONSENSO
DESCRIÇÃODESCRIÇÃOUm ou mais nodos propõem um valorO algoritmo de consenso garante que todos os nodosescolham um mesmo valor
UTILIDADEUTILIDADEEleição de um líderCommit atômico de transação
PROPRIEDADESPROPRIEDADESConcordância uniforme
Dois nodos quaisquer não tomam decisõesdiferentes.
IntegridadeNenhum nodo decide duas vezes.
ValidadeSe um nodo decide por um valor v, então v foiproposto por algum nodo.
TerminaçãoTodo nodo não-falho eventualmente decide poralgum valor.
MODELO DE FALHASMODELO DE FALHASFalhas em nodos são assumidas crash-stop (o nodopara de responder) e permanentes (o nodo não serecupera)Pelo menos metade dos nodos devem estar emfuncionamento correto para garantia de terminação
CONSENSO E CONSENSO E BROADCASTBROADCAST ATÔMICO ATÔMICOMuitas implementações de consenso decidem sobreuma sequência de valoresEsta sequência pode ser vista como uma ordem deentrega de mensagens:
Concordância ⇒ todos os nodos decidem entregarmensagens na mesma ordemIntegridade ⇒ mensagens não são duplicadasValidade ⇒ mensagens não são corrompidas ou“inventadas”Terminação ⇒ mensagens não são perdidas
∴ consenso ⇒ broadcast atômico
CONSENSO E ELEIÇÃO DE LÍDERESCONSENSO E ELEIÇÃO DE LÍDERESEleição de um líder único requer consenso10. O algoritmo de consenso é um broadcast atômico11. Broadcast atômico é similar a replicação com líderúnico
12.
Replicação com líder único requer um líder13. GOTO 1014.
CONSENSO E ELEIÇÃO DE LÍDERESCONSENSO E ELEIÇÃO DE LÍDERESCada eleição de líder recebe um número de época1. Quando o líder atual aparenta estar falho, uma novaeleição é realizada
2.
Para tomar uma decisão, o líder envia uma proposta eseu número de época aos outros nodos e aguarda asrespostas
3.
Um nodo responde a favor somente se não tiver vistoum líder com número de época maior
4.
Um quórum de nodos deve responder a favor paraconfirmar a decisão
5.
LIMITAÇÕESLIMITAÇÕESSimilar à replicação síncronaRequer a maioria dos nodos não-falhosAssume (em geral) um conjunto estático de nodosparticipantesUtilizam (em geral) timeouts para detectar líderesfalhos
ASSOCIAÇÃO EASSOCIAÇÃO ECOORDENAÇÃOCOORDENAÇÃO
SERVIÇOS DE COORDENAÇÃOSERVIÇOS DE COORDENAÇÃOConcentram tarefas como consenso, ordenação, edetecção de falhasÚteis para delegação de consenso em sistemas commuitos nodos, sem reduzir a um único ponto de falha
SERVIÇOS DE ASSOCIAÇÃOSERVIÇOS DE ASSOCIAÇÃODeterminam quais nodos estão ativos e emfuncionamentoCombinam detecção de falhas e consensoPodem declarar um nodo ativo como falho, mas sãoúteis mesmo assim
SUMÁRIOSUMÁRIO
CONCEITOSCONCEITOSLinearizabilidadeCausalidadeConsenso
PROBLEMAS REDUTÍVEIS ÀPROBLEMAS REDUTÍVEIS ÀCONSENSOCONSENSO
Registradores CAS linearizáveisCommit atômicoBroadcast atômicoLocksServiços de cordenação e associaçãoRestrição de unicidade
QUESTÕESQUESTÕES
QUESTÃO 1QUESTÃO 1Atribua timestamps de Lamport e ordene as operações
identificadas por letras.
D E F G
A B
C
Usuário 3
BD 1
BD 2
Usuário 1
Usuário 2
QUESTÃO 2QUESTÃO 2Explique a relação entre consenso, broadcast atômico, elinearizabilidade. Quais as consequências dessa relação?
DÚVIDAS?DÚ[email protected]