Buscar

Resumo cap7 Sistemas Distribuidos Tanenbaum

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Sistema Distribuídos, resumo capítulo 07 
Consistência e Replicação 
Chrystian Paulino Nunes 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
A replicação de dados é uma questão muito importante em 
sistemas distribuídos. Dados são replicados para aprimorar a 
confiabilidade e melhorar o desempenho, mas um dos principais 
problemas é deixar essas réplicas consistentes e isso significa que, quando 
uma cópia é atualizada, precisamos assegurar que todas as outras também 
atualizem, se não, as réplicas deixaram de ser iguais. 
Antes de mais nada, temos que entender por que razões a 
importância de replicar dados se dar. A replicação pode ser uma técnica 
para conseguir escalabilidade. Há duas razões primárias para replicar 
dados: confiabilidade e desempenho. Dados são replicados para aumentar 
sua confiabilidade, por exemplo, se um sistema de arquivos for replicado, 
podemos continuar trabalhando mesmo após a queda de uma réplica 
simplesmente com a comutação para uma das outras réplicas, toda vida, 
manter várias cópias possibilita oferecer melhor proteção contra dados 
corrompidos. 
 A replicação para conseguir desempenho é importante quando um 
sistema distribuído precisa ser ampliado em quantidade e área geográfica. 
A ampliação ocorre, por exemplo, quando um número cada vez maior de 
processos precisa acessar dados que são gerenciados por um único 
servidor, podendo melhorar o desempenho ao se replicar o servidor e 
dividir o trabalho. A ampliação em relação a área geográfica também pode 
exigir replicação, tendo como ideia colocar uma cópia dos dados próximos 
ao processo que os está usando, assim o tempo de acesso diminui e o 
desempenho aumenta. 
O problema da replicação é que ter múltiplas cópias de dados pode 
levar a sérios problemas de consistência. Sempre que uma cópia é 
modicada ela se torna diferente das restantes e em decorrência disso é 
preciso modificar todas as cópias para garantir a consistência. Para 
melhorar o desempenho os browsers web costumam armazenar no local 
uma cópia de uma página web que já foi acessada anteriormente, isto é, 
colocam a página em cache. 
Replicação e cache para melhorar o desempenho encontram ampla 
aplicação como técnicas de aumento do tamanho. Um provável 
compromisso que vai precisar ser feito é que para manter as cópias 
atualizadas requer mais largura de banda de rede. Um problema mais sério 
ainda é que manter várias cópias consistentes pode, por si só, estar sujeito 
a sérios problemas de escalabilidade. A ideia fundamental é que uma 
atualização seja realizada em todas as cópias como uma única operação 
atômica, ou transação, mas as dificuldades surgem pelo fato que 
precisamos sincronizar todas as réplicas. 
Toda via, por ouro lado, esses problemas de escalabilidade pode ser 
amenizados pela aplicação de replicação e cache, mas que resulta em 
menor desempenho, por outro lado manter todas as cópias consistentes 
em geral requer sincronização global, que são inerentemente cara em 
termos de desempenho. Em muitos casos, a solução real é relaxar as 
restrições de consistências, mas assim as cópias nem sempre podem ser 
iguais em todos os lugares. 
Por tradição, a consistência tem sido discutida no contexto de 
operações de leitura e escrita em dados compartilhados disponíveis por 
meio de memória compartilhada, de um banco de dados compartilhado 
ou de um sistema de arquivos. Um depósito de dados pode ser distribuído 
por várias máquinas, a ideia é que cada processo que pode acessar dados 
do deposito tem uma cópia local disponível do deposito inteiro. Um 
modelo de consistência é, em essência, um contrato entre processos e 
deposito de dados. Se os processos coordenarem e obedecerem a certas 
regras o deposito funcionara de maneira correta. 
A replicação de dados propõe problemas de consistência que não 
podem ser resolvidos com eficiência de modo geral. Há modos diferentes 
para as aplicações especificarem quais inconsistências elas podem tolerar. 
Adota-se três eixos independentes para definir inconsistências: desvio em 
valores numéricos entre replicas, desvio em idade entre replicas e desvio 
em relação a ordenação de operações de atualizações. Esses desvios são 
referenciados como se fossem consistência contínua. 
Além de consistência contínua, já um imenso acervo de trabalho 
sobre modelos de consistência centrados em dados acumulado em 
décadas passadas. Todos os modelos tratam de ordenar operações 
consistentemente em dados compartilhados replicados. Em principio, os 
modelos ampliam os de consistência continua no sentido de que, quando 
for preciso comprometer atualizações provisórias em replicas, estas terão 
que chegar a um acordo sobre uma ordenação global dessas atualizações, 
isso quer dizer que as replicas precisam concordar com uma ordenação 
consistente dessas atualizações. 
A consistência sequencial é um importante modelo de 
consistência centrado em dados que foi definido pela primeira vez por 
Lamport no contexto de memória compartilhada para sistemas 
multiprocessadores. Dizemos que um deposito de dados é 
sequencialmente consistente quando: “O resultado de qualquer execução 
é o mesmo que seria se suas operações realizadas por todos os processos 
no depósito de dados fossem executadas na mesma ordem sequencial e 
as operações de cada processo individual aparecessem nessa sequencia na 
ordem especifica por seu programa.” 
O modelo de consistência causal representa um enfraquecimento 
da consistência sequencial no sentido de que faz uma distinção entre 
eventos que são potencialmente relacionados por causalidade e os que 
não são. Para um deposito de dados ser considerado consistente por 
causalidade, é preciso que ele obedeça a condição: “Escritas que são 
potencialmente relacionadas por causalidade devem ser vistas por todos 
os processos na mesma ordem.” Implementar consistência causal requer 
monitorar quais processos viram quais escritas. Significa construir e 
manter um gráfico de dependência que mostre qual operação é 
dependente de quais outras operações e uma maneira de fazer isso se dá 
por meio de marcas de tempo vetoriais. 
A capacidade de manipular operações concorrentes sobre dados 
compartilhados e manter a consistência sequencial é fundamental para 
sistemas distribuídos. Deposito de dados de consistência eventual tem a 
prioridade de na ausência de atualizações, todas as replicas convergem em 
direção a copias idênticas umas as outras. 
Modelos de consistência centrados no cliente se originam do 
trabalho com o Bayou, que é um sistema de banco de dados desenvolvido 
para computação móvel, no qual a premissa é que a conectividade de rede 
é não confiável e sujeita a vários problemas de desempenho. Redes sem 
fio e redes que abrangem grandes áreas, como a internet, caem nessa 
categoria. O Bayou distingue quatro modelos de consistência diferentes. 
São esses: 
● Leituras monotonicas, se um processo ler o valor de um item de dados 
x, qualquer operação de leitura sucessiva de x executada por esse 
processo sempre retornara o mesmo valor ou um valor mais recente. 
● Escritas monotonicas, se dá quando uma operação de escrita 
executada por um processo em um item de dado x é concluída antes de 
qualquer operação de escrita sucessiva em x pelo mesmo processo. 
● Leia-suas-escritas, quando o efeito de uma operação por escrita por um 
processo no item de dados x sempre será visto por uma operação de 
leitura sucessiva em x pelo mesmo processo. 
● Escritas-seguem-leituras, garante que uma operação de escrita em um 
processo por um item de dados x em seguida a uma operação de leituraanterior em x pelo mesmo processo ocorre sobre o mesmo valor, ou 
sobre o valor mais recente de x que foi lido. 
Uma questão relevante para qualquer sistema distribuído que 
suporta replicação é decidir onde, quando e por quem as replicas devem 
ser posicionadas e, na sequencia, quais mecanismos usar para manter as 
replicas consistentes. O problema do posicionamento deve ser subdividido 
em dois grupos: posicionar servidores de replicas e posicionar conteúdo. 
Posicionar servidores e replicas possuem vários modos de calcular 
o melhor posicionamento de servidores de replicas. Ocorre que o 
posicionamento de servidor não percebido pelo cliente obtem resultados 
similares ao posicionamento percebido pelo cliente se adotarmos como 
premissa que os clientes estão distribuídos uniformemente pela internet. 
 
 
Quando se trata de posicionamento de conteúdo, podemos 
distinguir três diferentes tipos de replicas organizadas logicamente: 
● Réplicas permanentes. 
● Réplicas iniciadas pelo servidor. 
● Réplicas iniciadas pelo cliente. 
O gerenciamento de replicas trata da propagação de conteúdo para 
servidores de replicas relevantes. 
Uma importante questão de projeto, refere-se aquilo que, na 
verdade, deve ser propagado. Basicamente, há três habilidades: Propagar 
somente uma notificação de uma atualização; Transferir dados de uma 
cópia para outra; Propagar a operação de atualização para outras cópias. 
Propagar uma notificação é o que fazem os Protocolos de Invalidação. Em 
um protocolo de invalidação, outras cópias são informadas de que uma 
atualização ocorreu e que os dados que elas contem não são mais validos. 
 A invalidação pode especificar que parte do deposito de dados foi 
atualizada, de modo que somente parte de uma copia esta realmente 
invalidada. A principal vantagem dos protocolos de invalidação é que eles 
usam pouca largura de banda de rede. Tais protocolos funcionam 
geralmente melhor quando há muitas operações de atualização em 
comparação com operações de leitura. 
Em uma abordagem baseada em envio, também denominada 
protocolo baseado em servidor, as atualizações são propagadas para 
outras replicas sem que essas replicas tenham solicitado essas 
atualizações. A necessidade de um alto grau de consistência esta 
relacionada com o fato de que replicas permanentes e iniciadas por 
servidor, bem como grandes caches compartilhados, costumam ser 
compartilhados pormuitos clientes que executam principalmente 
operações de leitura. Por isso razão leitura/atualização em cada replica é 
relativamente alta. Nesses casos, protocolos baseados em envio de 
atualizações são eficientes no sentido de que se pode esperar que toda 
atualização enviada seja útil para um ou mais leitores. 
Ao contrário, em uma abordagem baseada em recuperação de 
atualizações, um servidor ou cliente requisita que outro servidor lhe envie 
quaisquer atualizações que ele tiver no momento em questão. Protocolos 
baseados em recuperação de atualizações, também denominados 
protocolos baseados no cliente, costumam ser usados por caches de 
clientes. 
Um leasing é uma promessa feita por um servidor de que ele enviará 
atualizações ao cliente por tempo especificado. Leasings foram 
introduzidos pela primeira vez fornecendo um mecanismo conveniente 
para comunicação dinâmica entre uma estratégia baseada em envio e uma 
baseada em recuperação de atualizações. Os autores distinguem três tipos 
de leasings: Leasings baseado em idade, baseado em frequência e por 
ultimo por critério de sobrecarga de estado de espaço do servidor. 
A implementação de modelos de consistência utiliza protocolos de 
consistência. Um protocolo de consistência descreve uma implementação 
de um modelo de consistência especifico. Foram desenvolvidos vários 
protocolos para lidar com as três formas de consistência. Temos várias 
soluções, tais como: 
● Limitação de desvio numérico 
● Limitação de desvio de idade 
● Limitação de desvio de ordenação 
 
De modo geral, na prática as aplicações distribuídas seguem 
modelos de consistência. Entre esses estão o de limitação de desvio de 
idade, em menor medida, e limitação de desvios numéricos. É preciso 
impor uma ordenação de escritas provisórias globalmente conmsistente. 
Dentre os modos de fazer isso, são utilizados os protocolos baseados em 
primários ou em quórum. 
● O protocolo mais simples baseado em primário é o protocolo de 
escrita remota. 
● Protocolo de escrita loca, protocolo variante dos protocolos 
primários e backup é aquela emque a copia primaria migra entre 
processos. 
● Protocolo baseado em quórum, suporta escritas replicadas, 
usando votação. A ideia básica é exigir que clientes requisitem e adquiram 
a permissão de vários servidores antes de ler ou escrever um item de 
dados replicado

Continue navegando