Logo Passei Direto
Buscar
Material

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

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?