CAPÍTULO 7 – CONSISTÊNCIA E REPLICAÇÃO Slides cedidos …simone/sd/contaulas/aula17.pdf ·...
Transcript of CAPÍTULO 7 – CONSISTÊNCIA E REPLICAÇÃO Slides cedidos …simone/sd/contaulas/aula17.pdf ·...
SISTEMAS DISTRIBUÍDOSCAPÍTULO 7 – CONSISTÊNCIA E
REPLICAÇÃOSlides cedidos pela Professora Aline
Nascimento e do curso Distributed Systems W4995
MODELOS DE CONSISTÊNCIA CENTRADOS NO CLIENTE
Modelos de Consistência Centrados em Dados
Visam fornecer uma visão consistente de um depósito de dados no âmbito de um sistema
Processos concorrentes podem estar atualizando um depósito de dados simultaneamente
Modelos de Consistência Centrados no Cliente
Os depósitos de dados são caracterizados pela ausência de atualizações simultâneas
A maioria das operações envolve ler dados
Estes depósitos oferecem um modelo de consistência mais fraco consistência eventual
MODELOS DE CONSISTÊNCIA CENTRADOS NO CLIENTE
Até que ponto a consistência precisa ser garantida?
Pode variar dependendo da aplicação
Páginas Web caches locais com páginas ainda
desatualizadas grau de inconsistência pode ser tolerado pelo
cliente
Com a introdução de modelos de consistência centrados no
cliente, muitas inconsistências podem ser ocultadas de
modo relativamente barato
CONSISTÊNCIA EVENTUAL
Consistência Eventual
MODELOS DE CONSISTÊNCIA CENTRADOS NO CLIENTE
Consistência centrada no Cliente
Quando se usa depósitos de dados de consistência eventual
Se um mesmo usuário operar sobre réplicas diferentes, ele pode
obter inconsiste ncias se as atualizações ainda não tiverem sido
propagadas
Estas inconsistências podem ser resolvidas a partir de
consistencia centrada no cliente
Dá garantia a um único cliente de consistência de acesso a um
depósito de dados por esse cliente
Não há garantia para acessos concorrentes por clientes diferentes
MODELOS DE CONSISTÊNCIA CENTRADOS NO CLIENTE
São destacados 4 modelos distintos de consistência
Leituras monotônicas
Escritas monotônicas
Leia-suas-escritas
Escritas-seguem-leituras
MODELOS DE CONSISTÊNCIA CENTRADOS NO CLIENTE
São usadas as seguintes notações:
xi versão do item de dados x na cópia local Li
WS(xi) conjunto de operações de escrita ocorrida em x em Li até
chegar em xi
Ok(xi;xj) o processo k realizou a operação O e produziu o valor xj a
partir de xi
Ok(xi|xj) o processo k realizou a operação O e produziu o valor xj
independentemente do valor xi
MODELOS DE CONSISTÊNCIA CENTRADOS NO CLIENTE
Leituras Monotônicas
Se um processo ler o valor de um item de dados x, qualquer operac ão de leitura sucessiva de x executada por esse processo sempre retornará o mesmo valor ou um valor mais recente
A consistência de leitura monotônica garante que se um processo viu um valor de x no tempo t, ele nunca verá uma versão mais velha de x em um tempo posterior
MODELOS DE CONSISTÊNCIA CENTRADOS NO CLIENTE
Leituras Monotônicas
Neste caso temos consistência porque na segunda leitura do processo 1, é lido um valor que é relacionado à primeira leitura
Neste caso não temos consistência porque na segunda leitura do processo 1, é lido um valor que não é relacionado à primeira leitura
MODELOS DE CONSISTÊNCIA CENTRADOS NO CLIENTE
Leituras Monotônicas
Na leitura de um calendário pessoal em diferentes servidores, a consistência leitura monotônica garante que o dono do calendário irá sempre ver todas as atualizações, independentemente de qual servidor está sendo acessado
Também garante que, se o usuário ler email e não houvermodificação enquanto o usuário estiver se movimentando de um servidor para outro, o usuário verá os emails que ele já leunovamente
MODELOS DE CONSISTÊNCIA CENTRADOS NO CLIENTE
Escritas Monotônicas
Uma operação de escrita executada por um processo em um item de dados x é concluída antes de qualquer operac ão de escrita sucessiva em x pelo mesmo processo
Atualização de versões de bibliotecas substituindo uma ou mais funcões
Neste caso temos consistência porque na segunda escrita do processo 1, é escrito um valor que é relacionado à primeira escrita realizada pelo processo 1
Neste caso não temos consistência porque na segunda escrita do processo 1, é escrito um valor que não é relacionado à primeira escrita
Neste caso temos consistência porque na segunda escrita do processo 1, é escrito um valor que é relacionado à primeira escrita realizada pelo processo 1
Neste caso não temos consistência porque na segunda escrita do processo 1, é escrito um valor que não é relacionado à primeira escrita
Neste caso temos consistência porque na segunda escrita do processo 1, é escrito um valor que é relacionado à primeira escrita realizada pelo processo 1
Neste caso não temos consistência porque na segunda escrita do processo 1, é escrito um valor que não é relacionado à primeira escrita
MODELOS DE CONSISTÊNCIA CENTRADOS NO CLIENTE
Leia suas escritas
O efeito de uma operação de escrita por um processo no item
de dados x sempre será visto por uma operac ão de leitura
sucessiva em x pelo mesmo processo
Contra-exemplo: Atualizamos uma página no servidor, mas quando
abrimos a página vemos a versão antiga (problema com o cache)
Neste caso temos consistência porque na leitura do processo 1, é lido um valor que é relacionado à escrita anterior realizada pelo processo 1
Neste caso não temos consistência porque na leitura do processo 1, é lido um valor que não é relacionado à escrita anterior realizada pelo processo 1
MODELOS DE CONSISTÊNCIA CENTRADOS NO CLIENTE
Escritas seguem leituras
Qualquer operação de escrita sucessiva executada por um
processo em um item de dados x, será realizada sobre uma
cópia de x atualizada com o valor lido mais recentemente pelo
processo
Neste caso temos consistência porque na escrita do processo 2, é escrito um valor que é relacionado à primeira leitura realizada pelo processo 1
Neste caso não temos consistência porque na escrita do processo 2, é escrito um valor que não é relacionado à primeira leitura realizada pelo processo 1
MODELOS DE CONSISTÊNCIA CENTRADOS NO CLIENTE
Escritas seguem leituras
Garantir que usuários de um grupo de discussão em rede vejam a apresentação de uma reação a um artigo somente depois de terem visto o artigo original
Um usuário lê um artigo A e depois reage apresentando uma resposta B
B será escrito para qualquer cópia do grupo, somente após A ter sido escrito
GERENCIAMENTO DE RÉPLICAS
Onde, quando e por quem réplicas devem ser posicionadas?
Posicionar servidores de réplicas
É o posicionamento de hardware: encontrar as melhores
localizac ões para colocar um servidor que pode hospedar depósito
de dados (ou parte dele)
Posicionar conteúdo
É o posicionamento dos dados e softwares: encontrar o melhor
servidor para colocar conteúdo.
POSICIONAMENTO DO SERVIDOR DE RÉPLICAS
Análises das propriedades do cliente e da rede são úteis
para se tomar decisões conscientes
Há vários modos de se calcular o melhor posicionamento de
servidores de réplicas
No geral, é um problema de otimização que consiste em selecionar
as melhores K de N localizações
POSICIONAMENTO DO SERVIDOR DE RÉPLICAS
Para selecionar as melhores K de N localizações
Podem ser usadas heurísticas baseadas na distancia (latencia,
largura de banda) entre clientes e localizac ões
Ou pode-se ignorar posições de clientes considerando a
Internet como um conjunto de Sistemas Autonomos (AS)
Rede no qual os nós executam o mesmo protocolo de roteamento,
que é gerenciada por uma única organização
Consideram o maior AS e colocam um servidor no roteador com
maior numero de enlaces
Os ASs são escolhidos em ordem de tamanho
POSICIONAMENTO DO SERVIDOR DE RÉPLICAS
O problema é que estes algoritmos são caros em termos de cálculo
Alternativa:
Foi desenvolvido um método para identificar rapidamente uma
região para o posicionamento do servidor de réplicas
As regiões são identificadas como um conjunto de nós que
acessam o mesmo conteúdo, com uma latência baixa entre nós
Primeiramente, seleciona-se as regiões com o maior número de
nós, e permite que um dos nós aja como Servidor de Réplicas
Funciona tão bem quanto os anteriores Mais rápido
GERENCIAMENTO DE RÉPLICAS
Replicação e posicionamento de conteúdo
Após o posicionamento do servidor de réplicas, é preciso
decidir sobre o posicionamento do conteúdo
Qual o melhor servidor para hospedar uma cópia de um depósito
de dados
Podem se distinguir 3 tipos de réplicas organizadas logicamente:
Réplicas permanentes
Réplicas iniciadas por servidor
Réplicas iniciadas por cliente
REPLICAÇÃO E POSICIONAMENTO DE CONTEÚDO
Réplicas permanentes:
Conjunto inicial de réplicas que constituem um depósito de
dados distribuído
Número de réplicas permanentes normalmente é pequeno
Exemplo: Site Web
Arquivos que constituem um site são replicados para um número
limitado de servidores que estão em uma única localização
Ou, site Web é copiado para um número limitado de servidores,
sites espelhados, que estão geograficamente espalhados pela
Internet
REPLICAÇÃO E POSICIONAMENTO DE CONTEÚDO
Réplicas iniciadas por servidor:
Cópias de um depósito de dados para aprimorar desempenho
são criadas por iniciativa do (proprietário do) depósito de dados
Replicac ão ou migracão de arquivos para proximidade de
clientes que emitem muitas requisições
Exemplo:
Considere um servidor em NY. Pode acontecer uma rajada de
requisições de uma localização inesperada, longe do servidor.
Neste caso, talvez seja vantajoso instalar uma quantidade de
réplicas temporárias nas regiões de onde vem as requisições
REPLICAÇÃO E POSICIONAMENTO DE CONTEÚDO
Réplicas iniciadas por cliente:
São mais conhecidas como Cache na máquina do cliente
Recurso de armazenamento local, usado por um cliente para
armazenar temporariamente uma cópia dos dados que ele
acabou de requisitar
Caches são usadas para melhorar o tempo de acesso aos dados
Gerenciamento da cache cabe inteiramente ao cliente
O depósito de dados de onde os dados foram trazidos nada tem a
ver com a manutenção da consistência dos dados em cache
REPLICAÇÃO E POSICIONAMENTO DE CONTEÚDO
Réplicas iniciadas por cliente:
Quando um cliente quer acessar alguns dados, se conecta com
a cópia do depósito de dados mais próxima
Quando a maioria das operações envolve somente ler dados, o
desempenho pode ser melhorado, dado que o cliente pode
armazenar dados requisitados em uma cache mais próxima.
Cache pode estar localizada na máquina do cliente, ou em uma
outra máquina separada dentro da mesma rede local
Dados são mantidos por um período limitado de tempo
REPLICAÇÃO E POSICIONAMENTO DE CONTEÚDO
Replicação e posicionamento de conteúdo
GERENCIAMENTO DE RÉPLICAS
Distribuição de Conteúdo
O gerenciamento de réplicas também trata da propagac ão de
conteúdo atualizado para servidores de réplicas relevantes,
seguindo os compromissos:
Estado X Operac ões
Protocolos de recuperac ão de atualizac ão X Protocolos de
envio de atualizac ões
DISTRIBUIÇÃO DE CONTEÚDO
Estado X Operações
Uma importante questão de projeto refere-se ao fato do que
deve ser propagado:
1. Somente uma notificac ão de uma atualizac ão
2. Transferir dados de uma cópia para outra
3. Propagar a operacão de atualizacão para outras cópias
DISTRIBUIÇÃO DE CONTEÚDO
Notificac ão de uma atualizac ão
Realizadas por protocolos de invalidac ão
Cópias são informadas que uma atualização ocorreu e que os dados que elas contém não são mais válidos
Usam pouca largura de banda
Útil quando existe muita operação de atualização e pouca leitura
Dados não são propagados
Toda vez que é requisitada uma operação em uma cópia invalidada, em geral esta cópia precisa ser atualizada anteriormente, segundo o modelo de consistência
DISTRIBUIÇÃO DE CONTEÚDO
Transferir Dados de Uma Cópia para Outra
Várias modificac ões empacotadas em uma única mensagem
Útil quando a taxa leitura/escrita é relativamente alta
A probabilidade de uma atualização ser realmente efetiva é
grande
Os dados modificados devem ser lidos antes de ocorrer uma outra
atualização sucessiva
O fato de haver um grande número de leituras faz com que os
dados devam ser modificados antes de ocorrer a atualização
seguinte
DISTRIBUIÇÃO DE CONTEÚDO
Propagar a operacão de atualizac ão para outras cópias
Não transferir dados, mas informar a cada réplica qual operac ão de atualizac ão ela deve realizar
São informados os parâmetros e informações necessárias para a operação de atualização
Esta abordagem é denominada replicação ativa
O principal benefício da replicação ativa é que as atualizações muitas vezes podem ser propagadas com custos mínimos de largura de banda
Pode ser que a réplica precise de maior capacidade de processamento
DISTRIBUIÇÃO DE CONTEÚDO
Recuperação X Envio de Atualizações
Abordagem baseada em envio
Atualizacões são propagadas para outras réplicas sem que essas
réplicas tenham solicitado essas atualizações
Costumam ser usados entre réplicas permanentes e réplicas
iniciadas por servidor, mas também podem ser usadas para enviar
atualizações a caches de clientes
Usadas quando é necessário alto grau de consiste ncia
Dados consistentes estão disponíveis imediatamente quando
solicitados
DISTRIBUIÇÃO DE CONTEÚDO
Recuperação X Envio de Atualizações
Abordagem baseada em recuperac ão de atualizac ões
Um servidor ou cliente requisita que um outro servidor lhe envie
quaisquer atualizacões que ele tiver no momento em questão
Comumente usado por caches de clientes
Cliente sonda o servidor para ver se é necessária uma atualização
DISTRIBUIÇÃO DE CONTEÚDO
Comparação entre protocolos
QUESTÃO 2
Explique qual a principal razão de se utilizar
modelos de consistência fraca.
RESPOSTA 2
Muitas vezes é necessário utilizar replicação para aumentar
o desempenho do sistema. Com a replicação, surge a
necessidade de se manter réplicas consistentes.
Trabalhar com consistência, de maneira a evitar uma
sincronização global de eventos, é a única forma de se
alcançar um bom desempenho em sistemas distribuídos de
larga escala.
Assim, muitas aplicações aceitam modelos de consistência
fraca onde as restrições em relação a atualização das
réplicas podem ser relaxadas.
QUESTÃO 4
Durante a discussão de modelos de consistência, nos
referimos frequentemente ao contrato entre o software e o
depósito de dados. Por que tal contrato é necessário?
RESPOSTA 4
É importante que o depósito de dados implemente o que o
software espera. Se um programa espera consistência
sequencial, o depósito de dados deve garantir este nível de
consistência.
Entretanto, para melhorar o desempenho pode-se fornecer
um modelo de consistência mais fraco. Neste caso, o
software deve concordar com as regras de um novo
contrato.
QUESTÃO 7
Considere modelos de consistência centrados em dados
Consistência Contínua
Consistência Sequencial
Consistência Causal
Qual tipo de consistência você utilizaria para implementar
um mercado de ações eletrônico?
RESPOSTA 7
Consistência causal seria suficiente.
A consistência causal e sequencial ampliam a consistência contínua no sentido que quando for preciso comprometer atualizações provisórias em réplicas elas devem obedecer a um acordo sobre a ordenação global destas atualizações.
Na consistência causal
Mudanças que ocorrem de maneira independente podem ser
realizadas em ordens diferentes
Já, mudanças que ocorrem como reações de outras devem ser
consistentes