Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 1 Hélio Crestana Guardia - 2011
Consistência e Replicação
Replicação de dados é importante em SDs
Replicação ocorre para melhorar confiabilidade ou aumentar desempenho
Manutenção da consistência das réplicas é problema
Consistência implica atualizar demais cópias quando uma delas é alterada
Questões:
– O que significa consistência de dados replicados?
– Como pode ser obtida?
– Para que serve consistência e como se relaciona com escalabilidade?
Modelos de consistência
– Data-centric consistency
– Client-centric consistency
Gerenciamento de réplicas:
– Posicionamento e distribuição dos conteúdos
– Consistência
Formas de consistência
Cache e consistência
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 2 Hélio Crestana Guardia - 2011
Razões para replicação
Razões para replicação: confiabilidade e desempenho
Confiabilidade:
Réplica permite continuidade de operação se uma cópia falha, apenas
redirecionando os acessos
Existência de múltiplas cópias também provê proteção contra
corrupção dos dados
Replicação favorece a escalabilidade numérica e de abrangência geográfica
Escalabilidade numérica obtida replicando dados e particionando
acessos
Aumento da abrangência geográfica obtido com a replicação e o
posicionamento dos dados próximos aos usuários, reduzindo tempos de
acesso e melhorando desempenho
Aumendo de desempenho pode ser difícil de avaliar: melhora nos tempos de
resposta é gerada ao custo de aumento de trasmissões para garantir
consistência
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 3 Hélio Crestana Guardia - 2011
Replicação
Existência de múltiplas cópias pode ocasionar problemas de consistência
Alteração numa cópia a torna diferente das demais, que precisam ser
atualizadas
Quando e como as atualizações são realizadas determina o custo da
replicação
Ex.: cache WWW
Para melhorar tempos de resposta, navegador WWW pode manter cópias de páginas
em cache. Requisições subsequentes podem ser fornecidas rapidamente a partir da
cópia local
Modificações não são propagadas ao cliente, tornando cópia inconsistente
Solução (?):
Desabilitar cache
Usar cópias controladas pelo servidor (podem não estar próximas ao cliente...)
Fazer servidor invalidar cópias: requer manutenção de informações sobre todas
as cópias no servidor e envios de informações de invalidação
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 4 Hélio Crestana Guardia - 2011
Replicação como técnica de escalabilidade
Replicação e técnicas de cache são comumente usadas para prover
escalabilidade
Questões de escalabilidade associadas a problemas de desempenho
Posicionamento de cópias dos dados próximas dos (processos) usuários
pode prover aumento de desempenho com redução dos tempos de acesso
Atualização das cópias pode requerer aumento no consumo da largura de
banda de transmissão
Compromisso entre atualizações e uso do meio de transmissão:
Supondo processo P que acessa réplica local dos dados N vezes por segundo
Réplicas são atualizadas M vezes por segundo
Atualizações renovam completamente as cópias dos dados
Se N << M (taxa de acesso por atualizações é muito pequena), muitas
atualizções podem não ser visíveis por P
Manutenção de cópia próxima a P não é vantajosa, ou deve-se usar outra
política de atualizações
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 5 Hélio Crestana Guardia - 2011
Replicação como técnica de escalabilidade
Manutenção da consistência das cópias pode gerar implicações na
escalabilidade
Alterações de uma cópia devem ser propagadas antes que outras operações
sejam realizadas
Alterações são realizadas como uma única operação atômica, ou transação
Implementação de operações atômicas envolvendo grandes números de
cópias é complexa, tendo e vista os requisitos de velocidade
Réplicas devem sincronizar-se para atualização
Dificuldade para determinar quando uma atualização deve ser aplicada
localmente
Réplicas podem decidir sobre ordenação de eventos usando timestamps de
Lamport, ou usando coordenador
Sincronizações envolvem tempo significativo para comunicação,
especialmente em ambiente de redes de longa distância
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 6 Hélio Crestana Guardia - 2011
Replicação como técnica de escalabilidade
Dilema: escalabilidade pode ser obtida com replicação e melhora no tempo
de resposta, mas manutenção de consistência implica sincronização custosa
em termos de desempenho
Para garantir que réplicas estarão consistentes é preciso gantir que
operações conflitantes sejam realizadas na mesma ordem em todo lugar
Operações conflitantes:
Leitura-escrita (read–write): leitura e escrita ocorrendo concorrentemente
Escrita-escrita (write–write): duas (ou mais) operações de escrita simultâneas
Solução: relaxar restrições de consistência
Relaxar requisitos de atualizações usando operações atômicas, evitando
sincronizações globais e gerando ganho de desempenho
Preço: cópias podem não ser as mesmas em todos os lugares
Grau de relaxamento da consistência depende dos padrões de acesso e
atualizações dos dados replicados e do propósito a que os dados servem
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 7 Hélio Crestana Guardia - 2011
Modelos de consistência centrados em dados
Data-centric consistency
Consistência é comumente discutida em termos de operações de leitura e escrita de
dados compartilhados, acessíveis via memória (distribuída) compartilhada, base de
dados (distribuída) compartilhada, ou sistema de arquivos compartilhados
Termo depósito de dados (data store) é comumente utilizado para indicar dados
distribuídos em múltiplas máquinas
Cada processo que pode acessar os dados do depósito possui cópia local (ou
próxima) disponível
Operações de escrita são propagadas para as outras cópias
Operações são classificadas como escrita quando alteram os dados; nos demais
casos, são consideradas de leitura
Modelo de consistência é um contrato entre processos e o depósito de dados
Processo que realiza leitura, normalmente, espera obter valor correspondente à
última operação de escrita realizada
Sem relógio global, é difícil definir precisamente qual operação de escrita é a última
Diferentes modelos de consitência restringem os valores que uma operação de
leitura de um item de dados pode retormar
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 8 Hélio Crestana Guardia - 2011
Depósito de dados distribuídos
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 9 Hélio Crestana Guardia - 2011
Consistência contínua
Não existe solução claramente superior para replicação de dados
Replicação de dados gera problemas de consistência não triviais
Relaxamento da consistência favorece aumento de desempenho
Grau de relaxamento depende das aplicações
Diferentes formas podem ser usadas para especificar as inconsistências
toleradas (grau de consistência) pelas aplicações:
Desvios em valores numéricos entre réplicas: para aplicações em que os dados têm
semântica numérica. Ex.: preço de ações, variando em valor absoluto ($0.02) ou relativo
(0.5%). Dentro da faixa definida, réplicas são consideradas mutualmente consistentes.
Desvios numéricos também podem ser considerados em função do número de atualizações
ainda não aplicacas a réplica. Nesse caso,
desvio no valor indica o seu peso (weight).
Desvio em idade entre as réplicas. Ex.: aplicação meteorológia aceita previsões de tempo
com atualizações dentro de um período (algumas horas). Réplicas podem ser propagadas
apenas uma vez a cada intervalo de tempo.
Desvio em relação ao número e à ordenação das atualizações também pode ser tolerado.
Valores formam faixas de consistência contínua
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 10 Hélio Crestana Guardia - 2011
Conit: consistency unit
Yu e Vahdat propõem unidade de consistência (Consistency Unit –
Conit), que especifica a unidade de dados sobre a qual consistência
deve ser medida
Ex.:
Conit contém variáveis x e y, sincronizadas em 0 nas réplicas A e B
Cada réplica mantém um Vector Clock VCi
B envia operação [⟨5, B⟩: x := x + 2]; para A
A realizou essa operação de forma permanente e não pode desfazê-la
(roll back)
A tem 3 operações pendentes <8,A>, <12,A> e <14,A>:
Desvio de ordenação (order deviation) = 3
A ainda não recebeu de B a operação [⟨10, B⟩: y := y + 5]:
Desvio numérico em relação ao número de operações = 1
Peso (weight) = máxima diferença entre valores salvos de x e y
em A e operações em B não vistas por A: y=5 (A(2,0); B(2,5))
B tem 2 operações pendentes <5,B> e <10,B> e ainda não recebeu as
operações de A.
– Ordering deviation de B = 2
– Numerical deviation de B é 3, com peso = 6
(B: (x,y)=(0,0), A: (6,3)
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 11 Hélio Crestana Guardia - 2011
Conit: consistency unit
Deve haver um compromisso entre fine-grained e coarse-grained conits
Se conit representa uma grande porção de dados, como uma BD, atualizações são
agregadas para todos os dados no conit.
Manter conit muito pequena não é boa estratégia, à medida que número de conits a
gerenciar pode tornar-se muito grande
Fragmentação das conits ajuda prevenir falso compartilhamento (false sharing),
em que itens de dados são manipulados de forma independente mas, por estarem
numa conit, desempenho e disponibilidade são afetados
Na figura a seguir, suponha que réplicas podem diferir em no máximo 1 atualização:
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 12 Hélio Crestana Guardia - 2011
Conit: consistency unit
• Necessidade de protocolos e primitivas para especificar replicações e consistências
• Primitivas para especificação de consistência contínua devem ser simples
• Conit pode ser declarada junto com comando de atualização
Ex.:
AffectsConit(ConitQ, 1, 1);
Append message m to queue Q; // inclua msg m na fila Q
• Operações podem ser declaradas como dependentes de conits.
• Indica que a inserção de mensagem na fila Q pertence à conit ConitQ.
DependsOnConit(ConitQ, 4, 0, 60);
Read message m from head of queue Q; // leia msg m do início da fila Q
• DependsOnConit( ) indica que desvio numérico (numerical deviation), ordering
deviation, e staleness devem ser limitados aos valores 4, 0 e 60, respectivamente
– Pode haver no máximo 4 operações não aplicadas às outras réplicas, não deve haver
atualização provisória local (tentative local updates) e a idade da cópia local de Q não pode
ser mais antiga que 60 segundos.
– Middleware deve atualizar cópia de Q sempre que condições estabelecidas não são
satisfeitas
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 13 Hélio Crestana Guardia - 2011
Ordenação consistente de operações
• Consistência sequencial e consistência causal ampliam modelo de
consistência contínua, de forma que réplicas deverão estar de acordo sobre
ordem (sequência) dos eventos quando for preciso efetivar atualizações
provisórias nos dados replicados
• Depósito de dados é sequencialmente consistente quando satisfaz a seguinte
condição:
– O resultado de qualquer execução é o mesmo que seria se as operações (de leitura
e escrita) de todos os processos fossem executadas na mesma ordem sequencial,
e as operações de cada processo individual aparecessem nesta sequência na
ordem especificada por seu programa.
Comportamento de dois processos que operam sobre o
mesmo item de dados. Eixo horizontal representa o tempo.
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 14 Hélio Crestana Guardia - 2011
Consistência sequencial
• Todos os processos veem a mesma intercalação de operações
• Tempo de ocorrência não é relevante nesse caso
• Processos não precisam ver a cópia mais recente de um item de dados
• Processos veem as operações de escrita de todos os demais mas
apenas suas próprias leituras
• Na figura 7.5, escrita de P2 parece ter ocorrido antes da de P1
• 7.5b viola a consistência sequencial pois nem todos os processos veem a mesma
intercalação dos eventos
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 15 Hélio Crestana Guardia - 2011
Consistência sequencial
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 16 Hélio Crestana Guardia - 2011
Consistência sequencial
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 17 Hélio Crestana Guardia - 2011
Consistência causal
• Enfraquecimento da consistência sequencial, distinguindo eventos que são
potencialmente relacionados por causalidade
• Se evento b é causado ou influenciado por evento a, causalidade requer que todos
vejam primeiro a e depois b
• Escritas potencialmente relacionadas por causalidade devem ser vistas na mesma
ordem por todos os processos
• Escritas concorrentes (de itens não relacionados) podem ser vistas em ordem
diferente pelos processos
• Na figura 7.8, escritas W2(x)b e W1(x)c são concorrentes e não precisam ser vistas
por todos os processos na mesma ordem
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 18 Hélio Crestana Guardia - 2011
Consistência causal
• Na figura 7.9, escrita W2(x)b provavelmente depende de W1(x)a, uma vez que b pode
ser um resultado de cálculo envolvendo o valor lido por R2(x)a
• Escritas são relacionadas por causalidade e precisam ser vistas na mesma ordem por
todos os processos
• 7.9 a está incorreta
• 7.9b está correta, já que leitura foi removida e eventos de escrita tornam-se
concorrentes
• 7.9b não estaria correta com consistência sequencial
• Relógios vetoriais podem ser usados para determinar causalidade
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 19 Hélio Crestana Guardia - 2011
Operações de agrupamento
Consistências sequencial e causal são definidas nas operações de leitura e escrita
Em muitos programas, consistência é mantida em nível de granularidade mais alto,
utilizando mecanismos de sincronização baseados em exclusão mútua e transações
Operações de leitura e escrita são comumente encapsuladas em operações de
regiões críticas: ENTER_CS e LEAVE_CS – Critical Section
Ao executar com sucesso ENTER_CS, cópias dos dados estão atualizadas e
processo pode realizar operações de leitura e escrita.
Região crítica aumenta a granularidade das operações, provendo que sejam
executadas de maneira atômica
Primitivas para entrada e saída de região crítica podem ser definidas em termos de
variáveis de sincronização (synchronization variables).
Variáveis devem ser adquiridas (acquired) e liberadas (released) na entrada e na
saída da seção crítica.
Cada variável possui um dono corrente, que a adquiriu mais recentemente.
Proprietário pode entrar e sair da seção crítica.
Processo que deseja entrar na seção crítica deve enviar mensagem ao proprietário,
solicitando
posse e valores correntes associados à variável de sincronização.
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 20 Hélio Crestana Guardia - 2011
Operações de agrupamento
Processos podem possuir variável de sincronização em modo não
exclusivo, que permite várias leituras, mas nenhuma escrita
Aspectos de operação das variáveis:
Aquisição só pode ser efetivada quando todas as atualizações do atual dono
sobre os dados compartilhados tenham sido efetivadas: dados estão atualizados
Para que um acesso exclusivo seja concedido a uma variável de sincronização,
nenhuma outra concessão pode estar ativa
Depois de um acesso exclusivo, nenhum outro acesso não exclusivo à variável
associada pode ser realizado antes de atualizações serem efetivadas pelo dono
daquela variável
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 21 Hélio Crestana Guardia - 2011
Consistência de entrada
Figura 7.10 mostra exemplo de consistência de entrada
Bloqueios são associados a cada item de dados
Problema da consistência de entrada é a associação adequada dos dados com
variáveis de sincronização
Abordagem para implementação de consistência de entrada: avisar o
middleware sobre quais dados serão acessados numa transação
Em modelo orientado a objeto, uma variável de sincronização poderia ser
associada a cada objeto declarado, serializando as suas invocações
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 22 Hélio Crestana Guardia - 2011
Consistência versus coerência
Diversos processos podem realizar operações de leitura e de escrita sobre dados
Modelo de coerência descreve o que se pode esperar em relação a um item de dado
específico
Dado pode ser replicado por vários locais
Dado está coerente se suas várias cópias aderem ao modelo de coerência
associado
Modelo de consistência descreve o que se pode esperar quando múltiplos processos
manipulam um conjunto de dados compartilhados concorrentemente
Dados são considerados consistentes se aderem às regras descritas pelo modelo
Coherence defines the behavior of reads and writes to the same memory location.
A coherency protocol is a protocol which maintains the consistency between all the caches in a system of
distributed shared memory.
Coherence concerns only one memory location
Consistency concerns apparent ordering for all locations
A Memory System is Coherent if
can serialize all operations to that location such that,
operations performed by any processor appear in program order
value returned by a read is value written by last store to that location
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 23 Hélio Crestana Guardia - 2011
Modelos de consistência centrados no cliente
Client-centric consistency models
Modelos de consitência abordados proveem visão consistente do armazenamento
dos dados
Processos concorrentes podem realizar atualizações simultaneamente
Acesso mutuamente exclusivo é provido sobre os dados
Sistema mantém consistência sequencial
Mecanismos de sincronização, como transações ou bloqueios, podem ser usados para
prover consistência sequencial
Em certos casos, contudo:
Maioria das operações não envolve atualizações simultâneas ou estas podem ser
realizadas de maneira simples
Maioria dos acessos são apenas de leitura
Nesses casos, consistência pode ser centrada no cliente
Objetivo: evitar consistência global, focando nos dados desejados pelos clientes, ao
invés de no que deve ser mantido pelos servidores
Modelos: consistência eventual (eventual consistency), leitura monotônicas, escritas
monotônicas, leia-suas-escritas (read your writes), writes follow reads
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 24 Hélio Crestana Guardia - 2011
Consistência eventual
Operação concorrente de processos sobre dados e grau de consistência
podem variar
Ex.:
Bancos de Dados
Acessos são predominantemente de leitura
Nesses casos, é relevante saber quão rapidamente as atualizações devem ser
disponibilizadas para os leitores
DNS
Apenas autoridade de um domínio pode realizar operações de escrita
Não há concorrência na escrita, apenas conflitos de leitura-escrita
Atualizações podem ocorrer de maneira lenta (lazy), em que dados são
disponibilizados para leitura apenas um tempo depois da escrita
WWW
Atualizações praticamente só ocorrem pelo webmaster do domínio
Navegadores e Proxies mantêm cópias locais das páginas acessadas
Dados dos caches podem estar desatualizados
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 25 Hélio Crestana Guardia - 2011
Consistência eventual
Aplicações citadas toleram graus relativamente altos de inconsistência
Se atualizações não ocorrem por longos intervalos, cópias gradualmente
tornam-se consistentes: consistência eventual
Na ausência de atualizações, todas as réplicas convergem para cópias
idênticas
Atualizações devem obrigatoriamente propagar-se para todas as cópias
Conflitos de escrita são relativamente fáceis de resolver, uma vez que
apenas um pequeno grupo realiza atualizações
Consistência eventual funciona bem se clientes sempre acessam a mesma
réplica
Problema associado a acesso de cliente móvel, que pode obter dados a partir
de diferentes réplicas:
Cliente realiza atualizações e muda ponto de acesso à rede
Cliente se move e retoma acesso via outro ponto de acesso
Atualizações podem não ter sido propagadas entre réplicas
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 26 Hélio Crestana Guardia - 2011
Consistência centrada no cliente
Consitência centrada no cliente (client-centric): provê garantia para um único
cliente, considerando a consistência dos dados que esse cliente armazenou
Cliente acessa réplica local, ou a mais próxima
Leituras e escritas são, então,
realizadas nessa cópia
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 27 Hélio Crestana Guardia - 2011
Leituras monotônicas (monotonic reads)
Modelo de consistência centrada no cliente (client-centric)
Condição:
Se um processo lê o valor de um item de dados x, qualquer operação de
leitura subsequente de x por aquele processo irá sempre retornar
aquele valor ou um mais recente
Ex.: E-mail distribuído:
Cliente acessa lista de mensagens num local, sem remoção ou alteração
Acesso posterior em outro local deverá prover a mesma visão da lista de
mensagens
Notação:
WS(xi[t]) is the set of write operations (at Li) that lead to version xi of x (at time t)
WS(xi[t1];xj[t2]) indicates that it is known that WS(xi[t1]) is part of WS(xj [t2])
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 28 Hélio Crestana Guardia - 2011
Leituras monotônicas
(a)
Processo P lê dados de x em L1, obtendo x1, resultante de WS(x1) realizado em L1
Posteriormente, P lê x em L2 – R(x2)
Para garantir consistência de leituras monotônicas, todas as operações em WS(x1)
devem ter sido propagadas para L2 antes da segunda operação de leitura
(b)
Depois de ler x1 em L1, P lê R(x2) em L2
Não há garantias que WS(x2) contém operações associadas a WS (x1)
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 29 Hélio Crestana Guardia - 2011
Escritas monotônicas (monotonic writes)
Operações de escrita devem ser propagadas na ordem correta para todas as
cópias
Condição:
Uma operação de escrita por um processo em um item de dados x, é concluída
antes de qualquer operação
de escrita subsequente de x pelo mesmo
processo
Concluir operação de escrita significa que cópia sobre a qual operação
subsequente é realizada, pelo mesmo processo, reflete o efeito de alteração
anterior, independentemente de onde essa operação foi feita
Consistência provida assemelha-se a FIFO centrada em dados, de forma
que, para o mesmo processo, ordem correta das operações é garantida
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 30 Hélio Crestana Guardia - 2011
Escritas monotônicas
(a)
P realiza escrita em x na cópia local L1: W(x1)
Posteriormente, P executa outra escrita em x, agora em L2: W(x2)
Para garantir consistência de escrita monotônica, L1 deve ter sido propagada para
L2: W(x1) em L2
(b)
Consistência de escrita monotônica não é garantida; falta propagação de W(x1) para
cópia em L2
Não há garantia que cópia de x na qual segunda escrita está sendo realizada tem
valor mais recente no tempo W(x1)
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 31 Hélio Crestana Guardia - 2011
Leia suas escritas (read your writes)
Modelo de consistência centrado no cliente, relacionado com leituras
monotônicas
Condição:
O efeito de uma operação de escrita por um processo no item de dados x
sempre será visto por uma operação de leitura sucessiva em x pelo mesmo
processo
Operação de escrita é sempre concluída antes de uma operação de leitura
sucessiva pelo mesmo processo, independente de onde essa operação de
leitura ocorrerá
Ex.: atualização de página Web por editor integrado ao navegador faz com
que requisição posterior seja buscada do servidor ao invés de ser provida do
cache desatualizado
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 32 Hélio Crestana Guardia - 2011
Leia suas escritas (read your writes)
(a)
Processo P realizou operação de escrita W(x1) e, mais tarde, uma operação de leitura
em uma cópia local diferente.
Consistência “leia suas escritas” garante que efeitos da escrita podem ser vistos pela
leitura subsequente: WS(x1; x2) declara que W(x1) é parte de WS(x2)
(b)
W(x1) foi deixada fora de WS(x2), o que significa que efeitos da operação de escrita
de P não foram propagados para L2.
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 33 Hélio Crestana Guardia - 2011
Escritas seguem leituras (writes follow reads)
Último modelo de consistência centrado no cliente
Atualizações são propagadas como resultado de operações de leitura
precedentes
Condição:
Garante-se que uma operação de escrita por um processo em um item de dados
x, em seguida a uma operacão de leitura em x pelo mesmo processo, ocorre
sobre o mesmo valor ou sobre o valor mais recente de x que foi lido
Modelo de consistência pode ser usado para garantir que usuários de um
grupo de discussão em rede vejam o resultado de uma reação a um artigo
somente depois de terem visto o artigo original
Por exemplo, reações a artigo são armazenadas localmente somente se o
artigo original também estiver ali
Usuários que apenas leem artigos não precisam de modelo de consistência
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 34 Hélio Crestana Guardia - 2011
Escritas seguem leituras (writes follow reads)
(a)
Processo lê x na cópia local L1
Operações de escrita que levaram ao valor que acabou de ser lido também aparecem
no conjunto de escrita em L2, onde o mesmo precesso realiza uma operação de
escrita mais tarde
(b)
Não há garantia de que operação em L2 é realizada sobre cópia consistente com a
que acabou de ser lida em L1
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 35 Hélio Crestana Guardia - 2011
Gerenciamento de réplicas
Questões:
Como decidir onde, quando e por quem as réplicas devem ser
posicionadas?
Quais mecanismos usar para manter réplicas consistentes?
Posicionamento:
Localização de servidores de réplicas: achar as melhores localizações
para hospedar depósito de dados
Posicionamento de conteúdos: achar os melhores servidores para
colocar um conteúdo
Duas questões de posicionamento nem sempre são tratadas separadamente
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 36 Hélio Crestana Guardia - 2011
Posicionamento de servidor de réplicas
Posicionamento é normalmente tratado do ponto de vista mais gerencial e
comercial do que como um problema de otimização
Otimização: selecionar melhores K de N localizações (K<N)
Solução ótima é complexa, normalmente tratada com alguma heurística
Heurísticas:
Distância (latência e largura de banda) entre clientes e localizações
Seleção de um servidor por vez, minimizando distância média entre servidor e
seus clientes
Na Internet, posicionamento pode ser realizado ignorando a posição dos clientes
e posicionando o servidor no nó com maior número de interfaces de rede, no
maior sistema autônomo (autonomous system – AS).
Algoritmo é repetido com o 2o maior AS e, assim, sucessivamente
Problema: complexidade – O (N2) – torna as abordagens inadequadas, como no
caso de flash crowds (multidões instantâneas) de acesso a site específico
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 37 Hélio Crestana Guardia - 2011
Posicionamento de servidor de réplicas
Heurísticas:
Determinação de região para posicionamento de réplicas: conjunto de nós que
acessam mesmo conteúdo, com baixa latência entre os nós.
Meta: selecionar regiões com maiores demandas e permitir que um nó nessa região
sirva réplicas
Nós estão posicionados em espaço geométrico m-dimensional
Ideia é identificar K maiores clusters de nós e designar um nó de cada cluster para
hospedar o conteúdo replicado
Espaço total é particionado em células; K células mais densas são escolhidas para
conter as réplicas
Tamanho das células é relevante para prover bom balanceamento
Select best location out of N − K for which the average distance to clients is minimal. Then choose the next
best server. (Note: The first chosen location minimizes the average distance to all clients.)
Computationally expensive.
Select the K-th largest autonomous system and place a server at the best-connected host: computationally
expensive.
Position nodes in a d-dimensional geometric space, where distance reflects latency. Identify the K regions
with highest density and place a server in every one: computationally cheap.
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 38 Hélio Crestana Guardia - 2011
Posicionamento de servidor de réplicas
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 39 Hélio Crestana Guardia - 2011
Replicação e posicionamento de conteúdo
Replicação de conteúdo pode ocorrer segundo 3 organizações:
Réplicas permanentes
Réplicas iniciadas por servidor
Réplicas iniciadas por clientes
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 40 Hélio Crestana Guardia - 2011
Replicação e posicionamento de conteúdo
Réplicas permanentes: conjunto inicial de réplicas que constituem depósito de
dados distribuído
2 abordagens:
Replicação de conteúdo em servidores presentes na mesma localização
(cluster)
Balanceamento de carga é comumente usado para distribuir as
solicitações aos servidores locais
Espelhamento: site é copiado para um número limitado de servidores
geograficamente espalhados
Clientes escolhem um dos sites (ou são direcionados por consultas
DNS)
A. S. Tanenbaum,
M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 41 Hélio Crestana Guardia - 2011
Replicação e posicionamento de conteúdo
Réplicas iniciadas por servidor
Cópias criadas sob demanda pelo proprietário dos dados para aumento do
desempenho
Instalação de cópias temporárias nas regiões de onde as requisições estão sendo
geradas
Conjuntos de servidores estão espalhados na Internet, podendo receber cópias de
dados para prestação de serviços Web próximos aos clientes (ex. Akamai)
Replicação pode ocorrer para reduzir carga de um servidor
Arquivos específicos de um servidor podem ser migrados ou replicados para
servidores próximos aos clientes desses arquivos
Cada servidor monitora contagens de acesso por arquivo e de onde vêm as
requisições de acesso
Para um dado cliente, servidor pode determinar qual servidor está mais próximo dele
(usando BD de roteamento)
Limiar de número de acessos determina se cópia deve ser removida de servidor ou se
deve ser replicada em outro
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 42 Hélio Crestana Guardia - 2011
Réplicas iniciadas por servidor
Keep track of access counts per file, aggregated by considering server closest to
requesting clients
Number of accesses drops below threshold D ⇒ drop file
Number of accesses exceeds threshold R ⇒ replicate file
Number of access between D and R ⇒ migrate file
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 43 Hélio Crestana Guardia - 2011
Réplicas iniciadas por cliente
Conhecidas como caches (de cliente)
Recurso de armazenamento local usado para conter cópias temporárias dos dados
requisitados
Gerenciamento do cache cabe ao cliente e não ao depósito de dados
Depósito de dados pode informar ao cliente quando dados no cache estão
desatualizados
Caches usados para melhorar tempo de acesso aos dados
Dados são trazidos da cópia mais próxima, normalmente o cache local
Esquema funciona bem quando dados não foram modificados
Manutenção dos dados no cache ocorre por tempo limitado, para evitar que fiquem
muito antigos ou para dar lugar a novos dados
Cache hit ocorre quando dados solicitados podem ser providos do cache
Caches podem ser compartilhados entre clientes para melhorar utilização
Caches de clientes são posicionados diretamente em cada um deles ou em alguma
máquina compartilhada entre clientes na rede local
Caches podem também ser posicionados em pontos específicos de uma rede
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 44 Hélio Crestana Guardia - 2011
Distribuição de conteúdo
Gerenciamento de réplicas também trata da propagação de conteúdo
(atualizado)
O que deve ser propagado?
Somente notificações de atualização: protocolos de invalidação (usada
para caches)
Dados de uma cópia para outra (como no caso de BDs distribuídas)
Operação de atualização para outras cópias (replicação ativa)
Abordagem depende da largura de banda disponível e da relação
leitura/escrita nas réplicas
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 45 Hélio Crestana Guardia - 2011
Estado versus operações
Protocolos de invalidação propagam notificação
• Outras cópias são informadas que atualização ocorreu e dados que elas
contêm não são mais válidos
• Invalidação pode indicar partes alteradas, permitindo acesso às demais
• Nada é propagado além da notificação
• Quando uma operação é requisitada sobre cópia invalidada, atualização
deve ocorrer antes, dependendo do modelo de consistência em uso
• Vantagem dos protocolos de invalidação:
– Usam pouca largura de banda
– Envio apenas de indicação de quais dados estão inválidos
• Invalidações são adequadas quando há muitas atualizações em comparação
com operações de leitura: razão leitura / escrita é pequena
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 46 Hélio Crestana Guardia - 2011
Estado versus operações
• Transferência dos dados modificados é adequada quando razão leitura /
escrita é relativamente alta
– Probabilidade de atualização ser efetiva é maior: dados modificados
serão lidos antes de nova modificação
– Também é possível transferir apenas informações sobre as alterações
ocorridas (diffs), para economizar capacidade de transmissão
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 47 Hélio Crestana Guardia - 2011
Estado versus operações: replicação ativa
Atualizações também podem ocorrer enviando não dados modificados, mas
informações sobre operações de atualização que devem ser realizadas:
replicação ativa
Cada réplica, nesse caso, é representada por um processo capaz de manter
ativamente atualizados os dados
Replicação em geral requer envio de poucas informações, correspondentes
aos parâmetros das operações a realizar
Réplicas podem tem que apresentar maior capacidade de processamento
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 48 Hélio Crestana Guardia - 2011
Protocolos Pull e Push
• Atualizações podem ser buscadas (pulled) ou enviadas (pushed)
Push-based, ou server-based approach (baseada no envio ou no
servidor): atualizações são propagadas para outras réplicas sem que
essas as tenham solicitado
• Comumente utilizadas entre réplicas permanentes e iniciadas por servidor
• Também podem ser usadas para enviar atualizações a caches de clientes
• Útil quando réplicas precisam grau de consistência elevado (idênticas)
• Réplicas permanentes e iniciadas por servidor costumam ser compartilhadas por
múltiplos clientes, com acesso principalmente de leitura
• Razão leitura / atualização é alta: atualizações são úteis
• Questão: servidor precisa manter informações de estado (stateful) de todos os
(caches) clientes
• Manutenção de informação de estado (stateful) tornam abordagem server push menos
tolerante a falhas
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 49 Hélio Crestana Guardia - 2011
Protocolos Pull e Push
Pull-based ou client-based approach (baseada em recuperação ou no
cliente)
servidor ou cliente solicita que outro servidor lhe envie atualizações
existentes
Costumam ser usadas em caches de cliente
Ao receber solicitações de dados que estão no cache local, clientes
verificam com servidor se dados locais ainda estão atualizados
Em caso de alterações, dados são primeiro trazidos para o cache antes de
serem fornecidos à aplicação
Abordagem é eficiente quando razão leitura / atualização é baixa
Tempo de resposta é elevado em caso de cache miss
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 50 Hélio Crestana Guardia - 2011
Pull versus Push
• Possibilidade de sobrecarga de processamento e comunicação com o envio
de notificações para manutenção dos estados
Abordagem híbrida para propagação de atualização: leases
• Leases fazem com que servidor enviem (push) atualizações aos clientes
apenas por período de tempo determinado
• Ao final do tempo, clientes passam a solicitar dados ou negociam novos
leases (concessões)
• 3 tipos de leasing:
– Baseados em idade (age-based): atribuídos a itens de dados em função de suas
últimas datas de atualização
• Dados não modificados por longo período tendem a permanecer inalterados
• Leases longos significam menor número de mensagens de atualização
– Baseado na frequência em que cliente solicita atualização de sua cópia em cache:
• Leases longos para clientes que solicitam pedidos de atualização frequentes
– Baseado na sobrecarga de espaço de estado
no servidor: diminuição da duração
dos leases, gerando redução numérica à medida que expiram
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 51 Hélio Crestana Guardia - 2011
Protocolos Pull e Push
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 52 Hélio Crestana Guardia - 2011
Unicast versus multicast
• Trasmissão de atualizações pode ocorrer com unicast ou multicast
• Unicast: replicação de mensagens
• Multicast: envio para múltiplos receptores (réplicas)
– Em redes locais, possibilidade de uso de broadcast
– Eficiente no modelo de atualizações baseado no envio (push)
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 53 Hélio Crestana Guardia - 2011
Protocolos de consistência
• Descrevem a implementação de modelos de consistência
– Consistência contínua
– Protocolos baseados em primário
– Protocolos de escrita replicada
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 54 Hélio Crestana Guardia - 2011
Protocolos de consistência contínua
• Limitação de desvio numérico, mantendo-o dentro de limites
• Escrita tem peso (weight) associado, que representa valor pelo qual x é
atualizado: W(x) > 0
• Considere item de dados x e seja weight (peso) a mudança de seu valor depois de uma
operação de escrita W
• ∀W: weight (W) > 0
• W é incialmente encaminhado para uma das N réplicas, chamada de origin (W)
• Cada servidor mantém registro das operações de escrita (Li) que realizou em sua
cópia de x
• TW[i, j] são as escritas executadas pelo servidor Si, originadas de Sj:
TW [i, j] = ∑ { weight(W) | origin(W) = Sj & W ∈ Li }
• TW[i,i] representa as escritas agregadas submetidas ao servidor Si
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 55 Hélio Crestana Guardia - 2011
Protocolos de consistência contínua
• Valor efetivo de x: v(t) x:
• Valor vi de x na réplica i:
• Problema: garantir que v (t) − vi < δi para todo servidor Si.
• Abordagem: todo servidor Sk mantém uma visão TWk [i, j] do que imagina ser o
valor de TW [i, j]
• Visão pode ser propagada (gossiped) quando uma atualização é propagada
• Nota: 0 ≤ TWk [i, j] ≤ TW [i, j] ≤ TW [j, j]
• Solução: Sk envia operações de seus registros (logs) para Si quando percebe que TWk
[i, k ] está se distanciando de TW [k , k], particularmente, quando TW [k, k] − TWk
[i, k ] > δi /(N − 1)
• Nota: Staleness pode ser tratada de maneira análoga, essencialmente mantendo
registro do que foi visto mais recentemente de Si.
v t =vinit∑
k=1
N
TW [k , k ]
vi=vinit∑
k=1
N
TW [i ,k ]
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 56 Hélio Crestana Guardia - 2011
Limitação de desvio de ordenação
• Desvio de ordenação em consistência são causados pelo fato de que servidor
de réplicas aplica provisoriamente atualizações que lhe foram apresentadas
• Como consequência, cada servidor possui uma fila local de atualizações
provisórias
• Ordem definitiva para aplicação das atualizações precisa ser definida
quando tamanho da fila excede limite (ordering deviation)
• Nesse caso, servidor não mais aceita novos pedidos de escrita enquanto não
efetivar (commit) atualizações pendentes
• Efetivação depende de negociação com outros servidores de réplicas sobre a
ordem para aplicação das atualizações
• Protocolos usuais para negociação da ordenação:
– Primary-based (baseados em primário)
– Quorum-based (baseados em quórum)
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 57 Hélio Crestana Guardia - 2011
Primary-based protocols
• Aplicações distribuídas geralmente usam modelos de consistência simples
para limitar desvios de idade (staleness) e de valor (numeric)
• Consistência sequencial é comumente aplicada para prover a ordenação de
operações, usando agrupamento e bloqueios, ou transações
• Protocolos baseados em primário (primary-based) são os mais utilizados
• Cada item de dado x no depósito de dados tem um (servidor) primário
associado, que é responsável por coordenar as operações sobre x
• Primário pode ser fixo num servidor remoto, ou pode ser levado ao processo
onde uma operação de escrita é iniciada
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 58 Hélio Crestana Guardia - 2011
Primary-based: remote-write protocols
• Todas as operações de escrita devem ser encaminhadas a um servidor fixo
• Operações de leitura podem ser realizadas localmente
• Estratégia conhecida como primary-backup protocol
• Processo que deseja relizar operação de escrita sobre x encaminha operação
ao servidor primário de x
• Servidor primário realiza atualização sobre sua cópia de x e propaga a
atualização para os servidores de backup
• Cada servidor de backup realiza a atualização e envia notificação
(acknowledgment) ao primário
• Quando todos os backups responderem, primário envia acknowledgment para
o processo inicial
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 59 Hélio Crestana Guardia - 2011
Primary-based: remote-write protocols
• Problema: possível baixo desempenho, devido à demora até que cliente que
inciou a atualização possa prosseguir
– Atualização é realizada de maneira bloqueante
• Abordagem não bloqueante: servidor primário pode enviar ack ao cliente
assim que tiver realizado a atualização local; backups são atualizados a
seguir
– Aumento de desempenho ao custo de perda de tolerância a falhas
• Cada servidor primário pode ordenar escritas de forma global
• Todos os processos veem todas as operações de escrita na mesma ordem
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 60 Hélio Crestana Guardia - 2011
Primary-based: remote-write protocols
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 61 Hélio Crestana Guardia - 2011
Primary-based protocols
• Example primary-backup protocol: Traditionally applied in distributed
databases and file systems that require a high degree of fault tolerance.
• Replicas are often placed on same LAN.
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 62 Hélio Crestana Guardia - 2011
Primary-based: local-write protocols
Variação do protocolo primary-based backup, cópia primária migra para o
processo que deseja realizar uma operação de escrita
Processo que deseja atualizar um item x, localiza a cópia primária de x e a
move para sua localização
Vantagem da abordagem:
Múltiplas operações de escrita sucessivas podem ser executadas localmente
Processos leitores podem acessar suas cópias locais
Requer uso de protocolo não bloqueante, seguido pelas atualizações propagadas
para as cópias depois que primário conclui atualizações locais
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 63 Hélio Crestana Guardia - 2011
Primary-based: local-write protocols
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 64 Hélio Crestana Guardia - 2011
Primary-based: local-write protocols
Pode ser aplicado a computadores móveis que operam no modo
desconectado
Antes da desconexão, computador móvel se torna primário para todos os itens
de dado que deseja atualizar
Enquanto desconectado, operações de atualização são aplicadas localmente
Outros processos podem realizar leituras
Posteriormente, ao ser reconectado, primário propaga atualizações aos backups,
restaurando a consistência do sistema
Usados em sistemas de arquivos distribuídos
em geral
Servidor central fixo, que realiza todas as operações de escrita
Servidor permite que réplicas realizem blocos de atualizações locais,
visando ao aumento de desempenho
Ao concluir atualizações, réplica as propaga ao servidor central, que as
distribui aos demais servidores de réplica
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 65 Hélio Crestana Guardia - 2011
Protocolos de escrita replicada
Diferentemente dos protocolos primary-based, protocolos com
escrita replicada permitem que operações de escrita sejam realizadas
em múltiplas réplicas
Abordagens:
Replicação ativa
Protocolos baseados em quórum
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 66 Hélio Crestana Guardia - 2011
Protocolos de escrita replicada
Replicação ativa
Cada réplica tem um processo que realiza as atualizações
Atualizações são propagadas na forma das operações de escrita a realizar
Operações precisam ser realizadas na mesma ordem em todas as réplicas
Necessário mecanismo de broadcast completamente ordenado
Relógios lógicos de Lamport
– Implementação não tem boa escalabilidade
Ordenação total também pode ser obtida com coordenador central
(sequencer)
– Abordagem: encaminhar operações ao sequenciador, que atribui número
sequencial e a encaminha às réplicas
– Operações realizadas na ordem dos números sequenciais
– Operação se assemelha a protocolos de consistência baseados em primário
– Uso do sequencer não resolve problema da escalabilidade
– Combinação de relógios lógicos e sequencer pode ser empregada
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 67 Hélio Crestana Guardia - 2011
Protocolos de escrita replicada
Protocolos baseado em quórum
Escritas replicadas tratadas por mecanismo de votação
Clientes devem solicitar e adquirir permissões de múltiplos servidores
(réplicas) antes de ler ou escrever item de dados replicado
Ex.: Sistema de arquivos distribuído em que arquivo é replicado por N
servidores
Para atualizar um arquivo, cliente deve contactar ao menos metade do número
de servidores mais um (maioria) e fazê-los concordar com atualização
Obtida a maioria, arquivo pode ser alterado, recebendo um novo número de
versão, que é o mesmo para todos os novos arquivos atualizados
Para ler arquivo repliado, cliente também deve contactar ao menos metade mais
um servidores e solicitar os números de versão associados ao arquivo.
Se todos os números são os mesmos, essa deve ser a versão atual do arquivo, já
que escrita com outro valor iria falhar sem a maioria
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 68 Hélio Crestana Guardia - 2011
Protocolos de escrita replicada
Protocolos baseado em quórum
Para ler arquivo que contém N réplicas, cliente deve reunir um quórum de leitura
com NR servidores ou mais
Para modificar arquivo, quórum de escrita é necessário com NW servidores
Condições:
1. NR + NW > N : previne read-write conflicts
2. NW > N/2 : previne write-write conflicts
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 69 Hélio Crestana Guardia - 2011
Protocolos de escrita replicada
Protocolos baseado em quórum
a) OK
b) Possível conflito de escrita; NW <= N/2
c) Qualquer réplica pode ser usada para leitura, já que todas estão atualizadas
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 70 Hélio Crestana Guardia - 2011
Protocolos de coerência de cache
Cache coherence prototols
Caches formam caso especial de replicação controlada por clientes
Protocolos de coerência de cache semelhantes aos de consistência
Implementações comumente apoiam-se em mecanismos de hardware para
detecção de alteração (snooping) e para broadcast eficiente
2 critérios são comumente usados para classificar os protocolos de cache:
Estratégia de detecção de coerência (coherence detection strategy): quando
inconsistências são efetivamente detectadas
− Em soluções estáticas, compilador é encarregado das análises e da detecção de quais
dados podem levar a inconsistências por estarem em cache
− Soluções dinâmicas são comumente aplicadas em sistemas distribuídos, detectando
inconsistências em tempo de execução (runtime), através da consulta de servidores
Estratégia de imposição (enforcement) de coerência; determina como caches
são mantidos consistentes com as cópias dos servidores
− Estratégia simples: não autorizar que dados compartilhados sejam mantidos no cache
− Dados compartilhados mantidos em servidores, que usam protocolos primary-based
ou replication-write
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 71 Hélio Crestana Guardia - 2011
Protocolos de coerência de cache
Quando dados compartilhados são mantidos em cache, há 2 abordagens para
impor a coerência:
Fazer servidor enviar invalidações para todos os caches quado há modificações
Propagar as atualizações
Outro aspecto relevante: o que fazer quando cliente altera dados no cache?
Para caches somente de leitura, operações de escrita são realizadas apenas pelos
servidores, que propagam atualizações
Protocolo de distribuição garante que atualizações são propagadas aos caches
Abordagem pull-based é comumente usada
Também é possível que clientes alterem dados diretamente no cache e
propaguem atualizações para servidores
Estratégia comum em write-through caches
Usada em sistemas de arquivos distribuídos, em abordagem semelhante a primary-based
ou local-write protocol, em que cliente se transforma em primário temporário
Cliente deve receber permiss˜so exclusiva de escrita para evitar conflitos write-write
Oferecem bom desempenho já que todas as operações podem ser feitas localmente
Propagações de atualizações podem ser postergadas, permitindo diversas escritas antes de
informar aos servidores: estratégia conhecida como write-back
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 72 Hélio Crestana Guardia - 2011
Resumo
Replicação realizada para aumentar a confiabilidade de um SD e para aumento de
desempenho
Replicação introduz problema de consistência
Consistência das réplicas requer propagação de atualizações de forma que
inconsistências temporárias não são percebidas
Relaxamento da consistência é necessário para evitar perdas de desempenho
Diferentes modelos de consistência existem
Para consistência contínua, limita-se o desvio entre as réplicas
Ordenação consistente das operações é usada nos modelos de consistência
Consistência sequencial faz com que todos os processos vejam as operações de
escrita na mesma ordem
Na consistência causal, operações potencialmente dependentes são vistas na ordem
dessa dependência
Modelos de consistência centrados no cliente consideram que clientes conectam-se a
diferentes réplicas, atualizadas no momento do acesso
A. S. Tanenbaum, M. Van Steen. Sistemas Distribuídos – Cap 7: Consistência e Replicação / 73 Hélio Crestana Guardia - 2011
Resumo
Diferentes estratégias podem ser empregadas para propagação de atualizações
Aspectos:
O que é propagado: notificações, operações ou estados
Para quem atualizações são divulgadas; e
Quem inicia as atualizações
Decisão sobre quais réplicas atualizar e quando é tratada pelo protocolo de
distribuição
Atualizações podem ser propagadas (pushed) pelos servidores ou solicitadas (pulled)
pelos clientes
Protocolos de consistência descrevem implementações de modelos de consistência
Para consistência sequencial, primary-based protocols usam servidores para
controlar
e propagar atualizações e replicated-write propagam atualizações para
diversas cópias ao mesmo tempo. A ordenação das operações é complexa nesse caso.
Slide 1
Slide 2
Slide 3
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Slide 10
Slide 11
Slide 12
Slide 13
Slide 14
Slide 15
Slide 16
Slide 17
Slide 18
Slide 19
Slide 20
Slide 21
Slide 22
Slide 23
Slide 24
Slide 25
Slide 26
Slide 27
Slide 28
Slide 29
Slide 30
Slide 31
Slide 32
Slide 33
Slide 34
Slide 35
Slide 36
Slide 37
Slide 38
Slide 39
Slide 40
Slide 41
Slide 42
Slide 43
Slide 44
Slide 45
Slide 46
Slide 47
Slide 48
Slide 49
Slide 50
Slide 51
Slide 52
Slide 53
Slide 54
Slide 55
Slide 56
Slide 57
Slide 58
Slide 59
Slide 60
Slide 61
Slide 62
Slide 63
Slide 64
Slide 65
Slide 66
Slide 67
Slide 68
Slide 69
Slide 70
Slide 71
Slide 72
Slide 73