Você está na página 1de 116

Cap.

07 Consistncia e Replicao

7.1 Introduo
7.1.1 Razes para a Replicao
7.1.2 Replicao como Tcnica de Escalabilidade

7.2 Modelos de Consistncia Data-Centric


7.2.1 Consistncia Contnua
7.2.2 Ordenao Consistente de Operaes

7.3 Modelos de Consistncia Client-Centric


7.3.1 Consistncia Eventual
7.3.2 Leituras Monotnicas
7.3.3 Escritas Monotnicas

Lus F. Faina - 2014 Pg. 1/116


Cap. 07 Consistncia e Replicao

7.3 Modelos de Consistncia Client-Centric


...
7.3.4 Leia suas Escritas
7.3.5 Escritas seguem Leituras

7.4 Gerenciamento de Replicao


7.4.1 Possicionamento do Servidor de Rplica
7.4.2 Localizao e Replicao de Contedo
7.4.3 Distribuio de Contedo

Lus F. Faina - 2014 Pg. 2/116


Cap. 07 Consistncia e Replicao

7.5 Protocolos de Consistncia


7.5.1 Consistncia Contnua
7.5.2 Protocolo Primary Based
7.5.3 Protocolo Replicated-Write
7.5.4 Protocolo Cache-Coherence
7.5.5 Implementao de Consistncia Client-Centric

Lus F. Faina - 2014 Pg. 3/116


Referncias Bibliogrficas

Andrew S. Tanenbaum; Maarten van Steen - Distributed Systems:


Principles and Paradigms, Prentice-Hall, 2007, ISBN-10:
0132392275, ISBN-13: 9780132392273
Lectures dos autores Andrew S. Tanenbaum e Maarteen van
Steen (www.cs.vu.nl e www.distributed-systems.net/)
George Coulouris; Jean Dollimore; Tim Kindberg Sistemas
Distribudos: Conceitos e Projeto, Bookman, 4th Edition, 2007,
ISBN 9788560031498
Notas de Aula do Prof. Ricardo Anido do Instituto de Computao
(IC) da UNICAMP - www.ic.unicamp.br/~ranido/

Lus F. Faina - 2014 Pg. 4/116


7 Consistncia e Replicao
7 Consistncia e Replicao
Replicao de Dados - consiste em manter mltiplas cpias de
dados, chamadas de rplicas, em diferentes computadores.
problema - manter a consistncia entre as cpias, ou seja,
quando um cpia atualizada necessrio garantir que todas
as outras cpias sejam tambm atualizadas.

1a Abordagem - Leslie Lamport (1978) - Times, Clocks, and the


Ordering of Events in a Distributed System
tema de interesse em sistemas distribudos e em banco de
dados, mas sob diferentes aspectos.

Lus F. Faina - 2014 Pg. 5/116


7 Consistncia e Replicao
7 Consistncia e Replicao
contexto - modelos de consistncia para dados compartilhados
so difceis de serem implementados eficientemente em sistemas
distribudos de larga escala;
duas questes constituem os principais aspectos de projeto de
implementao dos modelos de consistncia: gerenciamento de
rplicas e como rplicas so mantidas.

Lus F. Faina - 2014 Pg. 6/116


7 Consistncia e Replicao 7.1 Introduo
7.1.1 Razes para a Replicao
reliability - dependability, or reliability, describes the ability of a
system or component to function under stated conditions for a
specified period of time [Wikipedia 2014]
availability - the ratio of (a) the total time a functional unit is
capable of being used during a given interval to (b) the length of
the interval [Wikipedia 2014]

So vrias as razes para replicao, das quais se destacam:


confiabilidade - rplicas garantem que no haver um nico
ponto de falha no sistema.
disponibilidade - rplicas propiciam o aumento da disponibi-
lidade do sistema como consequncia da confiabilidade.
Lus F. Faina - 2014 Pg. 7/116
7 Consistncia e Replicao 7.1 Introduo
7.1.1 Razes para a Replicao
razes para replicao, das quais se destacam:
transparncia de falha - em caso de falha, o usurio pode ser
movido para outra rplica sem notar que a falha ocorreu.
desempenho - balanceamento de carga, uso de cache,
escalabilidade geogrfica, aumento do sistema.
consistncia de dados - processo para manter uma informao
uniforme conforme ela se move em uma rede ou entre vrios
processos de um computador.

Obs.: fato de existir mltiplas cpias de dados, objeto de leitura


e escrita de vrios processos, gera o problema de inconsistncia.

Lus F. Faina - 2014 Pg. 8/116


7 Consistncia e Replicao 7.1 Introduo
7.1.2 Replicao como Tcnica de Escalabilidade
Replicao e Caching so largamente utilizadas como tcnicas
de escalabilidade para efeito de desempenho;
questes de escalabilidade normalmente aparecem na forma
de problemas de desempenho, assim:
disponibilizar cpias de dados prximas aos processos que as
utilizam pode melhorar o desempenho pela reduo do tempo de
acesso e, assim, resolver problemas de escalabilidade.
dilema - modificao desses dados em uma rplica exige que
as outras cpias sejam atualizadas para manter a consistncia.
dilema - propagar a modificao para cada rplica um pro-
cesso caro e pode causar perda de desempenho no sistema.

Lus F. Faina - 2014 Pg. 9/116


7 Consistncia e Replicao 7.1 Introduo
7.1.2 Replicao como Tcnica de Escalabilidade
em muitos casos, a nica soluo diminuir as restries de
consistncia, ou seja, no exigir que a atualizao seja executada
como uma operao atmica => ganho de desempenho.
nesta abordagem, evita-se a sincronizao global (instantnea)
dos dados => ganho de desempenho.

Lus F. Faina - 2014 Pg. 10/116


7 Consistncia e Replicao 7.2 Modelos de Consistncia Data-Centric
7.2 Modelos de Consistncia Data-Centric
contexto - modelos de consistncia so analisados tradicional-
mente por meio de operaes de leitura/escrita sobre dados
compartilhados (memria ou banco de dados compartilhado).

data store - pode se encontrar fisicamente distribudo em


diferentes mquinas e com as sequintes caractersticas:
cada processo pode acessar dados do repositrio atravs de
um cpia local de todo o contedo do repositrio;
operaes de escrita so propagadas para todas as cpias;
operao de dados classificada como escrita quando altera
o dado, diferentemente da operao de leitura.

Lus F. Faina - 2014 Pg. 11/116


7 Consistncia e Replicao 7.2 Modelos de Consistncia Data-Centric
7.2 Modelos de Consistncia Data-Centric
Fig. 7.1 Organizao geral de um Data Store, fisicamente
distribudo e replicado sobre mltiplos processos.

Lus F. Faina - 2014 Pg. 12/116


7 Consistncia e Replicao 7.2 Modelos de Consistncia Data-Centric
7.2 Modelos de Consistncia Data-Centric
consistency model - essencialmente o contraste entre os
processos e o repositrio de dados, no sentido das regras
acordadas entre os mesmos para manter a consistncia.
processos que realizam a leitura de um dado esperam que o
valor retornado seja o valor da ltima escrita nesse dado;
na ausncia de um relgio global, difcil definir qual operao
de escrita a ltima no contexto de sistemas distribudos;
assim, modelos de consistncia restringem os valores que uma
operao de leitura pode retornar sobre um item de dados.

Lus F. Faina - 2014 Pg. 13/116


7 Consistncia e Replicao 7.2 Modelos de Consistncia Data-Centric
7.2.1 Consistncia Contnua
Yu e Vehdat (2002) propem 03 classes de inconsistncias:
desvio de valores numricos entre rplicas ;
desvio de idade entre rplicas;
desvio em relao ordenao de operaes de escrita.

desvio de valor numrico - ocorre em aplicaes onde os


dados possuem semntica numrica.
soluo bvia - definir um desvio numrico absoluto ou relativo
entre os valores assumidos pelas cpias, assim:
... enquanto os valores estiverem dentro do limite estabelecido de
desvio, sero considerados como consistentes.
Lus F. Faina - 2014 Pg. 14/116
7 Consistncia e Replicao 7.2 Modelos de Consistncia Data-Centric
7.2.1 Consistncia Contnua
desvio de valor numrico - tambm pode ser entendido como
o nro. de atualizaes aplicadas a uma rplica, mas ainda no
disponveis para as demais rplicas.
e.g., rplicas de registros de preos de aes
desvio numrico absoluto - preo de uma ao entre as
rplicas no deve variar mais que $ 0,02;
desvio nmerico relativo - diferena entre o valor de duas
cpias no deve ser maior 5%.

Lus F. Faina - 2014 Pg. 15/116


7 Consistncia e Replicao 7.2 Modelos de Consistncia Data-Centric
7.2.1 Consistncia Contnua
desvio de idade - relacionado com a diferena de tempo da
data da verso atual para a data da ltima atualizao.
e.g., rplica de uma previso de tempo ser considerada
consistente por uma hora, independente do nmero de
atualizaes que ocorram nesse perodo.

Lus F. Faina - 2014 Pg. 16/116


7 Consistncia e Replicao 7.2 Modelos de Consistncia Data-Centric
7.2.1 Consistncia Contnua
desvio de ordenao - ordem das operaes de atualizao
em cada rplica podem ser diferentes dentro de um certo limite.
correes so feitas alterando a ordem dessas atualizaes
antes de persist-las em definitivo.

Obs.: dependncia de um acordo global de atualizao, pode


reverter atualizaes j completadas para na sequncia aplic-las
em uma ordem diferente de modo que se tornem permanentes.

Lus F. Faina - 2014 Pg. 17/116


7 Consistncia e Replicao 7.2 Modelos de Consistncia Data-Centric
7.2.1 Consistncia Contnua
Yu e Vehdat (2002) introduziram o conceito de unidade de
consistncia ou Consistency Unit ou conit - especifica a
unidade sobre a qual a consistncia deve ser medida;
ou seja, um conit pode ser definido como um registro repre-
sentando 01 estoque nico ou relatrio individual de tempo.

e.g., considere 02 rplicas A e B com um conit contendo os


itens de dados x e y;
cada rplica contm um relgio vetorial bidimensional VC i (Cap.
06), com a notao t, i expressando que uma operao foi
realizada pela rplica i no tempo lgico t (tempo local).

Lus F. Faina - 2014 Pg. 18/116


7 Consistncia e Replicao 7.2 Modelos de Consistncia Data-Centric
7.2.1 Consistncia Contnua
Fig. 7.2 Exemplo do rastreamento do desvio de consistncia
extrado do artigo Yu e Vehdat (2002).

Lus F. Faina - 2014 Pg. 19/116


7 Consistncia e Replicao 7.2 Modelos de Consistncia Data-Centric
7.2.1 Consistncia Contnua
Note que h a uma negociao entre conits com granularidade
fina e conits com granularidade grossa;
e.g. considere um conit como um banco de dados completo,
assim a atualizao de dados est condicionada a todo o conjunto
de dados naquele unidade de consistncia;
como consequncia, este cenrio pode produzir rplicas
rpidas no consistentes estado inconsistente.

e.g., considere 02 rplicas que se diferem no mais do que por


uma nica atualizao contexto de granularidade grossa, ou
seja, um conit consiste de 02 itens de dados (Fig. 7.3)

Lus F. Faina - 2014 Pg. 20/116


7 Consistncia e Replicao 7.2 Modelos de Consistncia Data-Centric
7.2.1 Consistncia Contnua
Fig. 7.3 Escolha da granularidade correta de um conit. a. 02
atualizaes disparam uma propagao de atualizao.

Lus F. Faina - 2014 Pg. 21/116


7 Consistncia e Replicao 7.2 Modelos de Consistncia Data-Centric
7.2.1 Consistncia Contnua
Fig. 7.3 Escolha da granularidade correta de um conit. a. 02
atualizaes disparam uma propagao de atualizao. b. no
h a necessidade de propagao de atualizao.

Lus F. Faina - 2014 Pg. 22/116


7 Consistncia e Replicao 7.2 Modelos de Consistncia Data-Centric
7.2.1 Consistncia Contnua
conits grandes - levam a rplica ao estado de inconsistncia
mais rpido quando comparada com conits pequenos.
conits pequenos - aumentam o nmero de conits que precisam
ser gerenciadas e, por consequncia, afetam o desempenho.

Obs.: para implementao deste mecanismos, faz-se neces-


srio criar protocolos de consistncia, por outro lado, identificar
os seus requisitos no uma tarefa nada fcil.

Lus F. Faina - 2014 Pg. 23/116


7 Consistncia e Replicao 7.2 Modelos de Consistncia Data-Centric
7.2.2 Ordenao Consistente de Operaes
Nesta seo, discutiremos operaes ordenadas de forma
consistente sobre dados compartilhados e replicados.
neste contexto, quando tentativas de atualizao em rplicas
necessitam ser concludas, as rplicas tero que acordar quanto
a ordenao global destas atualizaes.
necessrio que as rplicas concordem na ordenao
consistente das atualizaes para garantir a consistncia.

Lus F. Faina - 2014 Pg. 24/116


7 Consistncia e Replicao 7.2 Modelos de Consistncia Data-Centric
7.2.2 Ordenao Consistente de Operaes
Para melhor entendimento dos modelos a serem discutidos, pro-
cessos realizam operaes de escrita Wi(x)a e leitura Ri(x)a
sobre dados ao longo do tempo, para tanto, seja a notao:
Wi(x)a Processo Pi escreve/atualiza o dado x com o valor a;
Ri(x)b Processo Pi l o dado x retornando o valor b
eixo x representa o tempo que cresce da esquerda para a direita.

Fig. 7.4 Comportamento de 02 processos operando sobre o


mesmo item de dado x com operaes de escrita e leitura.

Lus F. Faina - 2014 Pg. 25/116


7 Consistncia e Replicao 7.2 Modelos de Consistncia Data-Centric
7.2.2 Ordenao Consistente de Operaes
Fig. 7.4 Comportamento de 02 processos operando sobre o
mesmo item de dado x com operaes de escrita e leitura.

Wi(x)a inicialmente realizada sobre uma cpia local do reposi-


trio de dados para P1 e, subsequentemente, propagada para
as outras cpias do repositrio de dados;
P2 l mais tarde o valor NIL e algum tempo depois o valor a da
sua cpia local do repositrio de dados;
leva-se um tempo para propagar a atualizao de x para P2,
o que perfeitamente aceitvel.

Lus F. Faina - 2014 Pg. 26/116


7 Consistncia e Replicao 7.2 Modelos de Consistncia Data-Centric
7.2.2 Ordenao Consistente de Operaes
consistncia sequencial - importante no modelo de consistn-
cia centrado em dados, foi definida por Lamport em 1979 no
contexto de memria compartilhada de sist. multiprocessados.
definio - resultado de qualquer execuo o mesmo que
seria se as operaes de leitura e escrita fossem executadas em
alguma ordem sequencial por todos os processos no repositrio;
onde, as operaes de cada processo aparecem nesta
sequncia em uma ordem especificada pelo seu programa.
Obs.: definio sugere que quando processos executam
concorrentemente em diferentes mquinas, um entrelaamento
vlido de operaes de leitura e escrita aceitvel, desde que
todos os processos enxerguem o mesmo entrelaamento.

Lus F. Faina - 2014 Pg. 27/116


7 Consistncia e Replicao 7.2 Modelos de Consistncia Data-Centric
7.2.2 Ordenao Consistente de Operaes
neste contexto, um processo enxerga writes de todos os
processos, mas somente seus prprios reads.

Fig. 7.5 a. consistncia sequencial do repositrio de dados; b.


repositrio de dados sem consistncia sequencial.

Lus F. Faina - 2014 Pg. 28/116


7 Consistncia e Replicao 7.2 Modelos de Consistncia Data-Centric
7.2.2 Ordenao Consistente de Operaes
a. mostra um depsito de dados sequencialmente consistente,
apesar de P3 e P4 terem lido um valor antigo;
b. mostra um depsito de dados no consistente porque P3 e P4
no enxergam a mesma intercalao de operaes de escrita.

Fig. 7.5 a. consistncia sequencial do repositrio de dados; b.


repositrio de dados sem consistncia sequencial.

Lus F. Faina - 2014 Pg. 29/116


7 Consistncia e Replicao 7.2 Modelos de Consistncia Data-Centric
7.2.2 Ordenao Consistente de Operaes
e.g., considere 03 processos executando concorrentemente onde
os itens de dados so formados por 03 variveis x, y e z de
um repositrio de dados compartilhado.
variveis so inicializadas com o valor 0;
operao de atribuio corresponde a operao de escrita;
declarao de impresso corresponde a 02 operaes de leitura.

Fig. 7.6 03 processos executando concorrentemente.

Lus F. Faina - 2014 Pg. 30/116


7 Consistncia e Replicao 7.2 Modelos de Consistncia Data-Centric
7.2.2 Ordenao Consistente de Operaes
anlise - 06 declaraes, 720 (6*5*4*3*2*1 = 6!) sequncias de
execuo so possveis, ainda que algumas sejam invlidas;
so 120 (5!) sequncias que iniciam com x 1, das quais
tem print(x,z) antes de y 1 o que viola a sequncia no prog.;
das sequncias tem print(x,y) antes de z 1, o que
tambm viola a ordem do programa;
anlise semelhante cabe para sequncias iniciadas por y 1
e sequncias iniciadas por z 1;
deste total, 90 sequncias so vlidas, 30 iniciando com x
1, 30 iniciando com y 1 e 30 com z 1.

Lus F. Faina - 2014 Pg. 31/116


7 Consistncia e Replicao 7.2 Modelos de Consistncia Data-Centric
7.2.2 Ordenao Consistente de Operaes
Fig. 7.7 04 sequncias vlidas de execuo para os processos
P1, P2, e P3 como mostrados na Fig. 7.6.
eixo imaginrio na vertical representa a linha do tempo.

Lus F. Faina - 2014 Pg. 32/116


7 Consistncia e Replicao 7.2 Modelos de Consistncia Data-Centric
7.2.2 Ordenao Consistente de Operaes
signature - concatenao das sadas de P1, P2, e P3, nesta
ordem, formando um string de 06 bits que caracteriza uma
sequncia particular de comandos / declaraes.
nem todas as 64 combinaes de bits so vlidas:
p.ex., 000000 no permitida pois implica que as declaraes print(y,z),
print(x,z) e print(x,y) so executadas antes de x 1, y 1, z 1
viola a ordem de execuo definida pelos programas.
p.ex., 001001 tambm no permitida, pois se assumirmos que P1 inicia a
execuo, ento os 02 primeiros bits representam print(y,z);
os prximos 02 bits 10 significam que P2 deve executar depois de P1 e
antes de P3 e os ltimos 02 bits 01 significam que P3 deve executar antes
de P1 executar, mas j vimos que P1 deve executar primeiro.

Lus F. Faina - 2014 Pg. 33/116


7 Consistncia e Replicao 7.2 Modelos de Consistncia Data-Centric
7.2.2 Ordenao Consistente de Operaes
consistncia causal - proposto por Hutto e Ahamad (1990)
representa uma consistncia sequencial fraca para garantir
concorrncia em memria compartilhada distribuda.
faz distino entre eventos potencialmente relacionados por
causalidade e os que no so relacionados por causalidade.
e.g., se o evento b causado ou influenciado por um evento
anterior a, todos devem ver primeiro a e depois b.

Obs.: operaes no relacionadas por causalidade so comu-


mente denominadas concorrentes.

Lus F. Faina - 2014 Pg. 34/116


7 Consistncia e Replicao 7.2 Modelos de Consistncia Data-Centric
7.2.2 Ordenao Consistente de Operaes
consistncia por causalidade - data store considerado
consistente por causalidade se satisfaz a seguinte condio:
escritas que so potencialmente relacionadas por causalidade devem
ser vistas por todos os processos na mesma ordem;
escritas concorrentes,ou seja, sem relao de causalidade, podem ser
vistas em ordem diferente em mquinas diferentes.

implementao - consistncia causal exige que as dependncias


entre operaes seja monitorada, o que pode ser feito com o uso
de marcas de tempo vetoriais.
e.g., como exemplo de consistncia causal, considere 04 proces-
sos P1, P2, P3 e P4 e uma sequncia de eventos.

Lus F. Faina - 2014 Pg. 35/116


7 Consistncia e Replicao 7.2 Modelos de Consistncia Data-Centric
7.2.2 Ordenao Consistente de Operaes
e.g., como exemplo de consistncia causal, considere 04 proces-
sos P1, P2, P3 e P4 e uma sequncia de eventos.
W2(x)b e W1(x)c so concorrentes, assim no exigido que
todos os processos enxerguem estas operaes na ordem.

Fig. 7.8 Sequncia de eventos com consistncia de causali-


dade, mas no com consistncia sequencial.

Lus F. Faina - 2014 Pg. 36/116


7 Consistncia e Replicao 7.2 Modelos de Consistncia Data-Centric
7.2.2 Ordenao Consistente de Operaes
a. W2(x)b potencialmente depende W1(x)a porque b pode ser
um resultado envolvendo o resultado do clculo de a - R 2(x)a;
02 operaes de write esto relacionadas pela relao de
causalidade, assim todos os processos devem exergar todas
estas operaes na mesma ordem.

Fig. 7.9 a. violao da consistncia de causalidade; b. sequn-


cia correta de eventos com consistncia de causalidade.

Lus F. Faina - 2014 Pg. 37/116


7 Consistncia e Replicao 7.2 Modelos de Consistncia Data-Centric
7.2.2 Ordenao Consistente de Operaes
b. W2(x)b potencialmente concorre com W1(x)a, pois a
operao R2(x)a foi removida de P2;
consistncia de causalidade no requer que escritas
concorrentes sejam globalmente ordenadas.

Fig. 7.9 a. violao da consistncia de causalidade; b. sequn-


cia correta de eventos com consistncia de causalidade.

Lus F. Faina - 2014 Pg. 38/116


7 Consistncia e Replicao 7.2 Modelos de Consistncia Data-Centric
7.2.2 Ordenao Consistente de Operaes
consistncia causal e sequencial - definidas no nvel (granula-
ridade) de operaes de leitura e escrita por razes histricas;
em muitos casos este nvel de granularidade fino no atende a
granularide suportada pela aplicaes;
Normalmente, compartilhamento de dados mantido atravs de
mecanismos de sincronizao para sincronizao, enquanto as
transaes mantm o controle de concorrncia.
ENTER_CS - significa que o dado no armazenamento local
est atualizado, ou seja, leituras e escritas podem ser realizadas;
ao terminar as operaes o processo invoca LEAVE_CS, pro-
tegendo as operaes do acesso concorrente.
Obs.: operaes so atomicamene executadas como unidades.
Lus F. Faina - 2014 Pg. 39/116
7 Consistncia e Replicao 7.2 Modelos de Consistncia Data-Centric
7.2.2 Ordenao Consistente de Operaes
Neste ponto, necessrio dar semntica s operaes
ENTER_CS e LEAVE_CS atravs de variveis de sincronizao;
dentre as possveis maneiras, em uma abordagem geral cada
varivel tem um dado associado que pode ser equivalente a um
conjunto de dados compartilhados;
processo deve ter a posse das variveis de sincronizao para
executar ENTER_CS, assim como deve liberar as variveis de
sincronizao quando for executar LEAVE_CS.

Obs.: Processos podem simultaneamente compartilhar uma


varivel de sincronizao em modo no exclusivo, ou seja,
podem ler mas no escrever no dado associado.
Lus F. Faina - 2014 Pg. 40/116
7 Consistncia e Replicao 7.2 Modelos de Consistncia Data-Centric
7.2.2 Ordenao Consistente de Operaes
03 critrios devem ser satisfeitos:
01 - aquisio de acesso para uma varivel de sincronizao no
concedida a um processo at que todas as atualizaes
referentes aos dados compartilhados seja realizada;
ou seja, todas as mudanas para um dado compartilhado devem se
tornar visveis, ou seja, devem ser atualizados.
02 - nenhum outro processo pode manter a varivel de sincroni-
zao, nem mesmo no modo no exclusivo, antes que o acesso
no modo exclusivo para uma varivel seja concedido;
ou seja, antes de atualizar um dado compartilhado, um processo precisa
entrar na regio crtica em modo exclusivo.

Lus F. Faina - 2014 Pg. 41/116


7 Consistncia e Replicao 7.2 Modelos de Consistncia Data-Centric
7.2.2 Ordenao Consistente de Operaes
03 critrios devem ser satisfeitos:
03 - aps a concesso do acesso no modo exclusivo para uma
varivel de sincronizao, o acesso ao modo no exclusivo por
um outro processo para a varivel de sincronizao no pode ser
realizado at que ele tenha consultado o dono da varivel;
ou seja, se um processo deseja entrar na regio crtica no modo no
exclusivo, necessrio primeiro verificar como o proprietrio da varivel
de sincronizaoa a mais recente cpia do dado compartilhado.

Lus F. Faina - 2014 Pg. 42/116


7 Consistncia e Replicao 7.2 Modelos de Consistncia Data-Centric
7.2.2 Ordenao Consistente de Operaes
e.g., considere o exemplo de consistncia de entrada, ou seja,
em vez de operar o dado compartilhado por completo, locks so
associados a cada item do dado compartilhado.
Acq(Lx) Acquire for x Rel(Ly) Release for y

Fig. 7.10 Sequncia vlida de eventos para a consistncia de


entrada itens x e y compondo o dado compartilhado.

Lus F. Faina - 2014 Pg. 43/116


7 Consistncia e Replicao 7.2 Modelos de Consistncia Data-Centric
7.2.2 Ordenao Consistente de Operaes
problema da consistncia de entrada - associar adequadamente
o dado com variveis sincronizao;
abordagem simples - explicitar ao middleware quais dados
sero acessados, semelhante quando informado quais tabelas
sero afetadas em uma transao.

consistncia versus coerncia - importante entender a


diferena entre 02 conceitos que esto relacionados.
e.g., considere o cenrio de um conjunto de processos que
executam operaes de leitura/escrita em um conj. de dados.

Lus F. Faina - 2014 Pg. 44/116


7 Consistncia e Replicao 7.2 Modelos de Consistncia Data-Centric
7.2.2 Ordenao Consistente de Operaes
e.g., considere o cenrio de um conjunto de processos que
executam operaes de leitura/escrita em um conj. de dados.
Modelo de Consistncia - descreve o que se espera de um
conjunto de itens de dados quando vrios processos operam de
forma concorrente.
Modelo de Coerncia - descreve o que se espera de um nico
item de dado replicado em vrios lugares quando cada cpia
submetida a um conj. de regras do modelo de coerncia.
e.g., modelo de consistncia sequencial aplicado a um nico
item de dado, na prtica, ocorrendo operaes de escritas
concorrentes, todos os processos eventualmente vero a mesma
ordem de updates.

Lus F. Faina - 2014 Pg. 45/116


7 Consistncia e Replicao 7.3 Modelos de Consistncia Client-Centric
7.3 Modelos de Consistncia Client-Centric
Os modelos de consistncia descritos anteriormente tem por
objetivo prover uma consistncia global do repositrio de dados;
ou seja, a suposio a de processos concorrentes podem
simultaneamente atualizar o repositrio e, assim, necessrio
consistncia face a concorrncia entre os mesmos.

e.g., em modelos baseados em objetos, o repositrio garante que


uma cpia atual do objeto ser fornecida ao processo chamador;
durante a chamada, nenhum outro processo pode interferir, ou
seja, acesso exclusivo concedido ao processo chamador.

Lus F. Faina - 2014 Pg. 46/116


7 Consistncia e Replicao 7.3 Modelos de Consistncia Client-Centric
7.3 Modelos de Consistncia Client-Centric
ou seja, manipular operaes concorrentes em dados com-
partilhados enquanto se mantm a consistncia sequencial
fundamental em sistemas distribudos.
Por razes de desempenho, consistncia sequencial pode ser
garantida somente com o uso de mecanismos de sincronizao
tais como transaes e locks.

Nesta seo discutiremos uma classe especial de data stores


distribudos caracterizados pela ausncia de atualizaes simult-
neas ou quando acontecem podem ser resolvidas facilmente.
tais modelos de consistncia so denominados eventualmente
consistentes e de modo geral escondem as inconsistncias.
Lus F. Faina - 2014 Pg. 47/116
7 Consistncia e Replicao 7.3 Modelos de Consistncia Client-Centric
7.3.1 Consistncia Eventual
Processos podem operar de modo concorrente de diferentes
maneiras, bem como pode variar o nvel de consistncia que deve
ser garantido aos dados objetos do compartilhamento.
e.g., em muitos sistemas de banco de dados os processos
executam muito mais operaes de leitura do que de atualizao;
neste contexto, como atualizaes rpidas devem estar
disponveis para processos de leitura?
e.g., no DNS s a autoridade nomeada responder pelo nome;
consequentemente, conflitos de atualizao nunca existiro,
porm, ainda assim existem conflitos de read-write.
soluo - processo leitor espera algum tempo aps completar a
atualizao para ento executar a operao de leitura.

Lus F. Faina - 2014 Pg. 48/116


7 Consistncia e Replicao 7.3 Modelos de Consistncia Client-Centric
7.3.1 Consistncia Eventual
e.g., atualizao de pginas na Web se d por uma nica
autoridade, tal como o webmaster ou proprietrio das pginas;
ou seja, no h conflitos write-write, mas por outro lado, para
melhorar o desempenho, browsers e proxies so configurados
para buscar e manter pginas na cache;
o que pode ocasionar o retorno de pginas no atualizadas, ou
seja, a verso da pgina uma verso mais antiga do que aquela
mantida pelo servidor Web atual.

Obs.: exemplos descritos podem ser vistos como casos de


repositrios de dados distribudos e replicados que toleram
relativamente um alto grau de inconsistncia.
Lus F. Faina - 2014 Pg. 49/116
7 Consistncia e Replicao 7.3 Modelos de Consistncia Client-Centric
7.3.1 Consistncia Eventual
Neles, se nenhuma atualizao acontecer por um tempo longo,
todas as rplicas estaro gradualmente inconsistentes, ou seja,
eventualmente consistente - o que exige que atualizaes
sejam propagadas a todas as rplicas.
conflitos de atualizaes so geralmente mais fceis e baratos
de serem resolvidas, desde que um pequeno grupo de processos
executem as operaes de escrita.

Normalmente consistncia eventual funciona bem na medida que


clientes acessam as mesmas rplicas;
entretanto, surgem problemas quando diferentes rplicas so
objeto de acesso em um curto perodo de tempo (Fig. 7.11).
Lus F. Faina - 2014 Pg. 50/116
7 Consistncia e Replicao 7.3 Modelos de Consistncia Client-Centric
7.3.1 Consistncia Eventual
Fig. 7.11 Princpio de um Usurio Mvel acessando diferentes
rplicas de um Repositrio de Dados Distribudo.

Lus F. Faina - 2014 Pg. 51/116


7 Consistncia e Replicao 7.3 Modelos de Consistncia Client-Centric
7.3.1 Consistncia Eventual
Terry et al. (1994) (1998) constituem a origem dos trabalhos de
modelos de consistncia centrados no cliente com o intuito de
amenizar os efeitos discutidos no exemplo anterior;
client-centric consistency - prov garantias para um nico
cliente em relao aos acessos consistentes ao data store;
no entanto, no d garantias de consistncias para acessos
concorrentes de 02 ou mais clientes.

Terry et al. propem 4 diferentes modelos de consistncia:


** Leituras Monotnicas ** Escritas Monotnicas
** Leia suas Escritas ** Escritas seguem Leituras

Lus F. Faina - 2014 Pg. 52/116


7 Consistncia e Replicao 7.3 Modelos de Consistncia Client-Centric
7.3.1 Consistncia Eventual
Terry et al. (1994) (1998) propuseram 04 diferentes modelos de
consistncia para um repositrio de dados fisicamente distribudo
em diferentes mquinas e com as seguintes caractersticas:
quando um processo acessa do data store, ele o faz na cpia
local ou na cpia mais prxima, embora em princpio, qualquer
cpia estaria apta para ser operada/manuseada;
operaes de leitura e escrita so realizadas na cpia local e
atualizaes so eventualmente propagadas para todas as cpias
cada item de dado tem proprietrio associado, ou seja, um
processo que tem permisso para modificar aquele item, assim,
evita-se conflitos do tipo escrita-escrita.

Lus F. Faina - 2014 Pg. 53/116


7 Consistncia e Replicao 7.3 Modelos de Consistncia Client-Centric
7.3.1 Consistncia Eventual
Modelos de Consistncia Client-Centric so descritos
utilizando-se a notao a seguir:
Seja xi[t1] a verso do dado x na cpia local Li no tempo t1;
verso xi[t1] o resultado de uma srie de operaes de escrita
na cpia local Li que ocorreram desde a inicializao conjunto
que denotado por WS( xi[t1] );
se as operaes em WS(xi[t1]) tambm forem executadas em
uma cpia local Lj no tempo t2, escrevemos WS( xi[t1]; xj[t2] );
se a ordenao de operaes ou a temporizao estiver clara
no contexto, o ndice de tempo ser omitido.

Lus F. Faina - 2014 Pg. 54/116


7 Consistncia e Replicao 7.3 Modelos de Consistncia Client-Centric
7.3.2 Leituras Monotnicas
monotonic-read consistency - se um processo ler o valor de
um item de dado x, novas operaes de leitura de x executadas
por este processo retornaram o mesmo valor ou um mais recente.
ou seja, se um processo viu o valor de x no tempo t1, este
processo no ver uma verso anterior de x em t2 - t2 > t1.

e.g., considere 02 cpias locais diferentes - L1 e L2 do mesmo


data store e o eixo x representando o tempo - tleft < tright.
em ambos os casos estamos interessados nas operaes
executadas por um nico processo P, aqui representadas em
negrito enquanto a linha pontilhada representa a ordem em que
as operaes so executadas - R(x1) antes de R(x2).
Lus F. Faina - 2014 Pg. 55/116
7 Consistncia e Replicao 7.3 Modelos de Consistncia Client-Centric
7.3.2 Leituras Monotnicas
P inicialmente executa uma leitura em x na cpia local L 1,
retornando o valor x1 naquele momento, resultado da operao
de escrita WS(x1) sobre L1;
mais tarde, P executa uma leitura em x na cpia local L2,
retornando o valor x2 naquele momento, no contexto onde
WS(x1) foi propagada para L2 => WS(x1,x2)
Fig. 7.12 Operaes de leitura executadas por P em 02 cpias
locais do mesmo data store. a) monotonic-read consistency

Lus F. Faina - 2014 Pg. 56/116


7 Consistncia e Replicao 7.3 Modelos de Consistncia Client-Centric
7.3.2 Leituras Monotnicas
Em contraste, Fig. 7.12 b) mostra que a consistncia de leituras
monotnicas no garantida pois WS(x1) no se propagou para
L2, pois apenas WS(x2) foi realizada;
no h garantias que este conjunto contenha todas as
operaes contidas em WS(x1).
Fig. 7.12 Operaes de leitura executadas por P em 02 cpias
locais do mesmo data store. a) monotonic-read consistency b)
data store no garante a leituras monotnicas.

Lus F. Faina - 2014 Pg. 57/116


7 Consistncia e Replicao 7.3 Modelos de Consistncia Client-Centric
7.3.3 Escritas Monotnicas
monotonic-write consistency - uma operao de escrita em um
dado x completada antes de alguma operao de escrita
subsequente do mesmo processo sobre o mesmo dado x.
ou seja, uma operao de escrita executada significa que a cpia
na qual operaes sucessivas forem realizadas reflete operaes de
escrita anteriormente executadas pelo mesmo processo,
independente do local onde foi iniciada.
e.g., considere 02 cpias locais diferentes - L 1 e L2 do mesmo data
store e o eixo x representando o tempo - t left < tright.
em ambos os casos estamos interessados nas operaes
executadas por um nico processo P, aqui representadas em
negrito enquanto a linha pontilhada representa a ordem em que as
operaes so executadas - W(x1) antes de W(x2).

Lus F. Faina - 2014 Pg. 58/116


7 Consistncia e Replicao 7.3 Modelos de Consistncia Client-Centric
7.3.3 Escritas Monotnicas
Fig. 7.13 a) para garantir a consistncia monotnica de
escritas, necessrio que as operaes de escrita anteriores
tenham sido propagadas para as demais cpias.
Fig. 7.13 b) mostra cenrio onde a consistncia de escritas mono-
tnicas no garantida, pois WS(x1) no foi propagada para L2
Fig. 7.13 Operaes de escritas executadas por P em 02
cpias locais do mesmo data store. a) data store com
consistncia de escritas monotnicas; b) data store que no
garante a consistncia de escritas monotnicas.

Lus F. Faina - 2014 Pg. 59/116


7 Consistncia e Replicao 7.3 Modelos de Consistncia Client-Centric
7.3.4 Leia suas Escritas
read-your-wristes consistency - efeito de operaes de escrita
por um processo em um item de dado x ser visto por uma
leitura subsequente em x pelo mesmo processo.
ou seja, operao de escrita sempre completada antes de
uma operao de leitura subsequente executada pelo mesmo
processo, independente de onde a operao foi executada.
e.g., considere 02 cpias locais diferentes - L1 e L2 do mesmo
data store e o eixo x representando o tempo - tleft < tright.
em ambos os casos estamos interessados nas operaes
executadas por um nico processo P, aqui representadas em
negrito enquanto a linha pontilhada representa a ordem em que
as operaes so executadas - W(x1) antes de R(x2).

Lus F. Faina - 2014 Pg. 60/116


7 Consistncia e Replicao 7.3 Modelos de Consistncia Client-Centric
7.3.4 Leia suas Escritas
Fig. 7.14 a) - P executa uma operao de escrita W(x1) e mais
tarde executa uma operao de leitura R(x2) em uma outra cpia
com a garantia de W(x1) foi propagada para L2 => W(x1,x2)
Fig. 7.14 b) - W(x1) foi mantida aparte da atualizao W(x2), ou
seja, o efeito da operao prvia de escrita no foi propagada.

Fig. 7.14 a) data store que prov read-your-writes consistency.


b) data store que no prov read-your-writes consistency.

Lus F. Faina - 2014 Pg. 61/116


7 Consistncia e Replicao 7.3 Modelos de Consistncia Client-Centric
7.3.5 Escritas seguem Leituras
writes-follow-reads consistency - uma operao de escrita no
item de dado x aps uma operao de leitura em x pelo mesmo
processo realizada em uma cpia de x atualizada com o valor
mais recentemente lido por aquele processo.

e.g., considere 02 cpias locais diferentes - L1 e L2 do mesmo


data store e o eixo x representando o tempo - tleft < tright.
em ambos os casos estamos interessados nas operaes
executadas por um nico processo P, aqui representadas em
negrito enquanto a linha pontilhada representa a ordem em que
as operaes so executadas - R(x1) antes de W(x2).
Lus F. Faina - 2014 Pg. 62/116
7 Consistncia e Replicao 7.3 Modelos de Consistncia Client-Centric
7.3.5 Escritas seguem Leituras
Fig. 7.15 a) P executa uma operao de leitura R(x1) e mais
tarde executa uma operao de escrita W(x2) em uma outra
cpia com a garantia de W(x1) parte de W(x2)
Fig. 7.15 b) no h garantia de que a operao em L2 se deu
sobre uma cpia que consistente com aquela lida em L1.

Fig. 7.15 a) data store com consistncia writes-follow-reads. b)


data store sem consistncia writes-follow-reads.

Lus F. Faina - 2014 Pg. 63/116


7 Consistncia e Replicao 7.4 Gerenciamento de Rplica
7.4 Gerenciamento de Rplica
questo fundamental - decidir onde, quando e por quem as
rplicas devem ser posicionadas e quais mecanismos usar para
manter as rplicas consistentes.
problema de possicionamento pode ser subdividido em 02
subproblemas: possicionamento de servidores de rplicas e
possicionamento de contedo;
naturalmente que antes de definir o possicionamento do
contedo, cabe o possicionamento dos servidores de rplicas.

Lus F. Faina - 2014 Pg. 64/116


7 Consistncia e Replicao 7.4 Gerenciamento de Rplica
7.4.1 Possicionamento do Servidor de Rplica
possicionamento - trata-se de um problema de cunho com viez
gerencial e/ou comercial do que um problema de otimizao;
existem diversas maneiras de se calcular a melhor localizao
do servidor de rplicas, ou seja, como escolher as melhores k
posies de n possveis localizaes.
Qui et al (2001) assume a distncia entre o cliente e a locali-
zao dos servidores de rplicas como ponto de partida;
localizaes medidas por latnca ou largura de banda.
soluo - escolher um servidor por vez de modo que a distncia
mdia entre eles e seus clientes seja a menor possvel, dado que
k servidores tenham sido possicionados de um total de n
servidores => n k localizaes no so contabilizadas.
Lus F. Faina - 2014 Pg. 65/116
7 Consistncia e Replicao 7.4 Gerenciamento de Rplica
7.4.1 Possicionamento do Servidor de Rplica
Radoslavov et al (2001) consideram a topologia dos servido-
res quanto aos Autonomous Systems - ASs desconsiderando a
posio dos clientes;
autonomous systems - rede na qual todos os ns executam o
mesmo protocolo de roteamento e so mantidos e gerenciados
pela mesma organizao.
proposta - considera o maior AS e possiciona o servidor no
roteador com o maior nmero de interfaces de rede, na sequn-
cia, repete o algoritmo para o segundo maior AS.
...considerando que clientes esto distribudos na rede, o resul-
tado alcanado para clientes que conheam a localizao dos
servidores em relao aqueles que no conhece similar.

Lus F. Faina - 2014 Pg. 66/116


7 Consistncia e Replicao 7.4 Gerenciamento de Rplica
7.4.1 Possicionamento do Servidor de Rplica
desvantagens - ambos os algoritmos so computacionalmene
caros e apresentam complexidade > O(N2), onde N representa o
nmero de localizaes possveis de serem inspecionadas;
mesmo com alguns milhares de localizaes faz-se necessrio
alguns minutos para encontrar o servidor mais prximo;
seu uso torna-se inaceitvel, ainda mais na presena de flash
crowd - rajada de requisies para um site especfico.

Lus F. Faina - 2014 Pg. 67/116


7 Consistncia e Replicao 7.4 Gerenciamento de Rplica
7.4.1 Possicionamento do Servidor de Rplica
Szymaniak et al. (2006) - desenvolveram uma maneira de
encontrar rapidamente o local onde posicionar as rplicas:
regio identificada como um coleo de ns de mesmo contedo que
apresentem baixa latncia entre os ns;
objetivo - selecionar a regio com maior demanda, ou seja,
aquela com o maior nro. de ns e na sequncia permitir que um
dos ns atue como o servidor de rplicas.

idia - identificar k maiores clusters e escolher um n de


cada cluster para receber o contedo replicado;
inicialmente o espao total particionado em clulas e as k
clulas mais densas so escolhidas para receber as rplicas.
Lus F. Faina - 2014 Pg. 68/116
7 Consistncia e Replicao 7.4 Gerenciamento de Rplica
7.4.1 Possicionamento do Servidor de Rplica
Fig. 7.16 Escolha do tamanho apropriado de uma clula para
possicionamento do servidor de rplicas.
clulas muito grandes - pode existir diversos clusters e, assim, um nro.
pequeno de servidores de rplicas selecionado;
clulas muito pequenas - cluster espalhado por varias clulas e, assim,
um nro. grande de servidores de rplicas selecionado.

Lus F. Faina - 2014 Pg. 69/116


7 Consistncia e Replicao 7.4 Gerenciamento de Rplica
7.4.1 Possicionamento do Servidor de Rplica
tamanho apropriado por ser computado como um funo
simples da distncia mdia entre 02 ns e o nro. de rplicas;
pode ser mostrado que o algoritmo apresenta desempenho to
bom o algoritmo timo descrito por Qiu et al. (2001), mas com
uma complexidade menor: O( N * max{ logN, K} ).
e.g., experimentos monstram que encontrar os 20 melhores
locais para uma coleo de 64.000 ns aproximadamente
50.000 vezes mais rpido.

Lus F. Faina - 2014 Pg. 70/116


7 Consistncia e Replicao 7.4 Gerenciamento de Rplica
7.4.2 Possicionamento de Contedo
Quando se trata de possicionamento e replicao de contedo, 03
diferentes tipos de rplicas podem ser logicamente organizados.
Fig. 7.17 Organizao lgica de diferentes tipos de cpias de
um data store em 03 aneis concntricos.

Lus F. Faina - 2014 Pg. 71/116


7 Consistncia e Replicao 7.4 Gerenciamento de Rplica
7.4.2 Possicionamento de Contedo
permanent replicas - podem ser consideradas como o conjunto
inicial de rplicas que constituem um data store;
e.g., sites Web esto geralmente distribudos em 02 formas:
arquivos que constituem o site so replicados em um nro. res-
trito de servidores de uma mesma clula, assim, uma requisio
encaminhada para um dos servidores segundo alg. round-robin.
site web copiado para um nro restrito de servidores espa-
lhados geograficamente pela Internet, assim, clientes simples-
mente escolhem um dos sites espelhados
semelhana entre ambos que h um nro. reduzido de rplicas em
que a configurao mais ou menos esttica.

Lus F. Faina - 2014 Pg. 72/116


7 Consistncia e Replicao 7.4 Gerenciamento de Rplica
7.4.2 Possicionamento de Contedo
organizao similar est presente nos bancos de dados
distribudos - OSZu & Valduriez (1999);
bancos de dados so distribudos e replicados em servidores
que conjuntamente formam um cluster de servidores, comumen-
te referenciados como arquitetura nada-compartilhada;
arquitetura nada-compartilhada - memria secundria e a
memria principal no so compartilhados pelos processadores.
ou seja, banco de dados distribudo e possivelmente
replicado em um nro. de sites dispersos geograficamente.

Lus F. Faina - 2014 Pg. 73/116


7 Consistncia e Replicao 7.4 Gerenciamento de Rplica
7.4.2 Possicionamento de Contedo
server-initiated replicas - so cpias do data store criados
pelo proprietrio do data store para aumentar o desempenho;
e.g., servidor em Nova York que repentinamente comea a
receber uma rajada de requisies de um local distante;
talvez, seja necessrio o uso de rplicas temporrias no local
de origem das requisies ou ao menos prximo;
servios de hospedagem Web oferecem uma coleo relativa-
mente esttica de servidores espalhados na Internet que podem
manter e prover o acesso aos arquivos Web;
Sivasubramanian et al. (2004) discute a viso geral de
replicao em servios de hospedagem na Web.

Lus F. Faina - 2014 Pg. 74/116


7 Consistncia e Replicao 7.4 Gerenciamento de Rplica
7.4.2 Possicionamento de Contedo
Uma outra abordagem para Servio de Hospedagem Web
descrita por Rabinovich et al. (1999):
algoritmo projetado para suportar pginas Web para as quais
assume-se que operaes de atualizao so raras comparadas
com as operaes de leitura;
e.g., servidores no servio de hospedagem web podem
decidir qual servidor est mais prximo de um cliente C, tendo
por base as informaes dos bancos de dados de roteamento;
se C1 e C2 compartilham o mesmo servidor mais prximo
P, todas as requisies de acesso para o arquivo F no servidor
Q vindas de C1 e C2 so registradas em Q com uma nica
contagem de acesso cnt(P,F) - Fig. 7.18

Lus F. Faina - 2014 Pg. 75/116


7 Consistncia e Replicao 7.4 Gerenciamento de Rplica
7.4.2 Possicionamento de Contedo
se C1 e C2 compartilham o mesmo servidor mais prximo
P, todas as requisies de acesso para o arquivo F no servidor
Q vindas de C1 e C2 so registradas em Q como uma nica
contagem de acesso cnt(P,F) - figura abaixo.
Fig. 7.18 Contando requisies de acesso de diferentes clientes.

Lus F. Faina - 2014 Pg. 76/116


7 Consistncia e Replicao 7.4 Gerenciamento de Rplica
7.4.2 Possicionamento de Contedo
quando o nro. de requisies para um arquivo F no servidor
S cai abaixo de um limite estabelecido - del(S,F), o arquivo
pode ser removido do servidor;
como consequncia o nro. de rplicas do arquivo F cai, possi-
velmente acarretando um aumento de carga nos servidores;
medidas so tomadas para garantir que ao menos um cpia de cada
arquivo continue a existir.
se o limite de replicao rep(S,F) maior que del(S,F),
indica que vale a pena replic-lo em outros servidores;
se o nmero de requisies estiver entre os limites de replicao e
remoo, ento para aquele arquivo permitido somente a migrao.

Lus F. Faina - 2014 Pg. 77/116


7 Consistncia e Replicao 7.4 Gerenciamento de Rplica
7.4.2 Possicionamento de Contedo
Quando um servidor Q decide reavaliar os arquivos no seu
repositrio, ele verifica o contagem de acessos para os arquivos;
se o nro de acessos para F est abaixo de um limiar,
remove-se F a menos que seja a ltima cpia;
alm disso, se para algum servidor P, cnt Q (P,F) excede em
mais da metada do total de requisies para F em Q, o servidor
P solicitado a assumir a cpia de F, ou seja, migrao.
migrao do arquivo F para o servidor P nem sempre
ocorre, p.ex., por que P est ainda carregado e fora do disco;
neste caso, Q ir tentar replicar F em outros servidores,
desde que o nro total de acessos para F em Q exceda o limite
de replicao rep(Q,F).
Lus F. Faina - 2014 Pg. 78/116
7 Consistncia e Replicao 7.4 Gerenciamento de Rplica
7.4.2 Possicionamento de Contedo
client-initiated replica - comumente conhecidas como cache,
so na essncia um armazenamento local utilizado pelo cliente
para armazenar temporariamente dados objeto da requisio;
data store do qual os dados foram lidos no tem nada a ver
com a manuteno da consistncia dos dados salvaguardados;
quando a maior parte das operao so leituras de dados, o
cliente pode guardar os dados que so requisitados em uma
cache local para melhorar o desempenho;
essa cache est na mquina cliente ou em uma cache
separada na rede local onde mquina cliente se encontra.

Lus F. Faina - 2014 Pg. 79/116


7 Consistncia e Replicao 7.4 Gerenciamento de Rplica
7.4.2 Possicionamento de Contedo
dados so mantidos na cache por um tempo limitado, p.ex.,
para prevenir dados obsoletos sendo usados ou simplesmente
abrir espao para outros dados;
para melhorar a taxa de acerto na cache, caches podem ser
compartilhadas entre os clientes, desde que dados requisitados
pelo cliente C1 so tambm requisitados pelo cliente C2.
possicionamento de cache de cliente relativamente simples:
cache possicionada na mesma mquina que o cliente; cache
na mquina compartilhada por clientes na rede local;
em alguns casos, nveis extras de cache so introduzidos
entre departamentos ou organizaes.

Lus F. Faina - 2014 Pg. 80/116


7 Consistncia e Replicao 7.4 Gerenciamento de Rplica
7.4.3 Distribuio de Contedo
gerenciamento de rplicas - trata da propagao e/ou
atualizao de contedo para servidores relevantes de rplicas
e envolve vrios aspectos:
state vs operations - um importante aspecto de projeto
refere-se ao que deve ser propagado:
propaga somente a notificao de atualizao nada propagado alm
de notificaes, ou seja, dados no so propagados;
transferir dados de uma cpia para outra quando a relao de leituras/
escritas alta interessante transferir dados;
propagar a operao de atualizao para as outras cpias cada rplica
recebe apenas parmetros da operao de atualizao.

Lus F. Faina - 2014 Pg. 81/116


7 Consistncia e Replicao 7.4 Gerenciamento de Rplica
7.4.3 Distribuio de Contedo
propagao de notificao - nada propagado alm de notifi-
caes, ou seja, encaminha atravs do protocolo de invalidao
notificao s outras cpias de que o dado no mais vlido;
protocolo de invalidao pode especificar que parte do data
store foi atualizada, assim, apenas uma parte da cpia est
atualmente invalidada.
principal vantagem dos protocolos de invalidao que
utilizam pouca banda da rede, pois a informao transferida a
especificao de quais dados no mais so vlidos;
... tais protocolos geralmente trabalham bem quando h muitas
operaes de atualizao comparado com as operaes de
leitura, ou seja, relao leituras/escritas relativamente pequena.

Lus F. Faina - 2014 Pg. 82/116


7 Consistncia e Replicao 7.4 Gerenciamento de Rplica
7.4.3 Distribuio de Contedo
transferir dados de uma cpia para outra utilizada quando
a relao de leituras/escritas relativamente alta;
neste contexto, a probabilidade que uma atualizao seja
efetiva no sentido de que o dado modificado ser lido antes da
prxima atualizao alta justicando a transferncia;
ao invs de propagar os dados modificados possvel salvar -
log as mudanas e transfera somente aquelas alteraes salvas
para economizar banda de rede;
transferncia so sempre concatenadas no sentido de que
mltiplas modificaes so agrupadas em um nica mensagem,
economizando overhead de comunicao.

Lus F. Faina - 2014 Pg. 83/116


7 Consistncia e Replicao 7.4 Gerenciamento de Rplica
7.4.3 Distribuio de Contedo
propagar a operao de atualizao para as outras cpias -
tambm chamada de replicao ativa, cada rplica recebe
apenas parmetros da operao de atualizao;
vantagem - pode frequentemente ser propagada com o mnimo
gasto de banda de rede, uma vez que os parmetros associados
com uma operao so relativamente pequenos;
desvantagem - maior processamento pode ser exigido em cada
um dos servidores de rplica, especialmente onde as operaes
so relativamente complexas.

Lus F. Faina - 2014 Pg. 84/116


7 Consistncia e Replicao 7.4 Gerenciamento de Rplica
7.4.3 Distribuio de Contedo
protocolos pull vs push - podem ser subdivididos em
push-based protocols e pull-based protocols.

push-based protocols - servidor inicia a atualizao sem que


outro servidor ou cliente encaminhe solicitao.
pull-based protocols - servidor ou cliente encaminha
solicitao de atualizao para um servidor de rplicas.

Lus F. Faina - 2014 Pg. 85/116


7 Consistncia e Replicao 7.4 Gerenciamento de Rplica
7.4.3 Distribuio de Contedo
push-based protocols ou server-based protocols - servidor pro-
paga as atualizaes para as rplicas, independente de solicitao por
parte das rplicas.
envio de atualizaes frequentemente usado entre rplicas perma-
nentes iniciadas pelo servidor, mas pode ser usado para atualizao de
cache de clientes.
so normalmente aplicadas quando as rplicas so mantidas sob um
alto grau de consistncia rplicas idnticas.
Alto grau de consistncia advm do fato de que rplicas permanentes
iniciadas pelo servidor so caracterizadas por operaes de leitura;
nestes casos, push-based protocols so eficientes no sentido de
que toda atualizao ser passvel de leitura com alta probabilidade por
01 (um) ou mais leitores.

Lus F. Faina - 2014 Pg. 86/116


7 Consistncia e Replicao 7.4 Gerenciamento de Rplica
7.4.3 Distribuio de Contedo
pull-based protocols ou client-based protocols - servidor ou
cliente solicita a um outro servidor que encaminhe quaisquer
atualizaes que tenha at o momento;
frequentemente usada em caches de clientes, pull-based
protocols so eficientes quando a taxa de leituras/escritas
relativamente baixa, p.ex., nonshared client caches;
entretanto, at mesmo quando h compartilhamento de cache
entre clientes, a abordagem pull pode ser eficiente quando o
compartilhamento de itens de dados raro;
principal desvantagem em relao ao push-based protocols
que o tempo de resposta cresce nos casos de cache miss.

Lus F. Faina - 2014 Pg. 87/116


7 Consistncia e Replicao 7.4 Gerenciamento de Rplica
7.4.3 Distribuio de Contedo
push-based protocols - servidor rastreia todas as caches de
clientes e pelo fato do servidor ser menos tolerante a falhas,
considervel overhead introduzido no servidor.
messages sent - mensagens so enviadas para cada cliente no
protocolo push-based para atualizao;
enquanto no protocolo pull-based o cliente ir escolher o
servidor e, se necessrio, solicitar o dado modificado.
Fig. 7.19 Comparao entre protocolos push-based e pull-
based em um cenrio com mltiplos clientes e 01 servidor.

Lus F. Faina - 2014 Pg. 88/116


7 Consistncia e Replicao 7.4 Gerenciamento de Rplica
7.4.3 Distribuio de Contedo
response time - no protocolo push-based, servidor envia dados
modificados para as caches dos clientes, assim, tempo de
resposta para o cliente zero;
no protocolo pull-based o tempo de resposta determinado
pelo tempo para buscar o dado modificado do servidor.

Fig. 7.19 Comparao entre protocolos push-based e pull-


based em um cenrio com mltiplos clientes e 01 servidor.

Lus F. Faina - 2014 Pg. 89/116


7 Consistncia e Replicao 7.4 Gerenciamento de Rplica
7.4.3 Distribuio de Contedo
unicasting vs multicasting - relacionado com envio ou
recuperao de atualizao pela rede subjacente;
unicast communication - quando um servidor, parte de um
data store encaminha suas atualizaes para n outros
servidores, isto se d atravs de n mensagens em separado;
multicast communication - normalmente, a rede subjacente se
encarrega de enviar de modo eficiente as mensagens para
mltiplos receptores servidores ou clientes.
em muitos casos, mais barato utilizar multicast disponvel,
embora excees possam ocorrer.
e.g., considere que todas as rplicas esto localizadas na mesma
rede local e que tenha disponvel o broadcasting;
Lus F. Faina - 2014 Pg. 90/116
7 Consistncia e Replicao 7.4 Gerenciamento de Rplica
7.4.3 Distribuio de Contedo
e.g., considere que todas as rplicas esto localizadas na mesma
rede local e que tenha disponvel o broadcasting;
neste caso, broadcasting ou multicasting no mais caro
que encaminhar mensagens ponto-a-ponto;

multicasting - pode ser com frequncia eficiente quando


combinado com protocolo push-based, pois um servidor
simplesmente utiliza um nico grupo multicast.
unicasting - mais eficiente no protocolo pull-based, pois
geralmente um nico cliente ou servidor o responsvel pela
requisio de atualizao de suas cpias.

Lus F. Faina - 2014 Pg. 91/116


7 Consistncia e Replicao 7.5 Protocolos de Consistncia
7.5 Protocolos de Consistncia
Nesta seo, nos concentramos na implementao dos modelos
de consistncia atravs dos protocolos de consistncia.
consistency protocol - descreve a implementao de um
modelo de consistncia especfico.

Lus F. Faina - 2014 Pg. 92/116


7 Consistncia e Replicao 7.5 Protocolos de Consistncia
7.5.1 Consistncia Contnua
Yu & Vahdat (2002) - desenvolveram alguns protocolos para
tratar as 03 formas de consistncia: desvio de valor numrico;
desvio de idade e desvio de ordenao de operaes.

bounding numerical desviation - deseja-se manter o desvio


numrico dentro de limites previamente estabelecidos.
cada W(x) ser associado a um peso que representa o valor
numrico para o qual x ser atualizado, ou seja, weight( W(x) )
ou simplesmente weight( W ) com weight( W ) > 0;
TW[ i,j ] so escritas executas em no servidor Si que tenham
sido originadas do servidor Sj, ou seja:

Lus F. Faina - 2014 Pg. 93/116


7 Consistncia e Replicao 7.5 Protocolos de Consistncia
7.5.1 Consistncia Contnua
TW[ i,j ] so escritas executas em no servidor Si que tenham
sido originadas do servidor Sj, ou seja:
TW[ i,j ] = Somatrio { weight(W) | origin(W) = Sj & W pertence Li }
e TW[ i,i ] representa todas as escritas submetidas a Si

objetivo - permitir que o valor vi no servidor Si desvie dentro


de limites do valor v(t) de x, ou seja:
v(t) = v(0) + Somatriok=1 at N TW[ k,k ] - v(0) valor inicial de x;
vi = v(0) + Somatriok=1 at N TW[ i,k ] - este valor determinado por
todas as escritas j submetidas no servidor.

Lus F. Faina - 2014 Pg. 94/116


7 Consistncia e Replicao 7.5 Protocolos de Consistncia
7.5.1 Consistncia Contnua
dado que vi <= v(t) e considerando desvios absolutos, para
todo servidor Si, associa-se um limite superior i tal que:
v(t) vi i
escritas submetidas ao servidor Si devem ser propagadas
para todos os outros servidores, p.ex., protocolo epidmico;
quando Si propagar a escrita originada de Sj para Sk, Sk
capaz de aprender sobre TW[ i,j ] no momento do envio da
escrita, ou seja, Sk pode manter a viso TWk[ i,j ] sobre o que
Si ter como valor para TW[ i,j ] ...
0 TWk[ i,j ] TW[ i,j ] TW[ j,j ]

Lus F. Faina - 2014 Pg. 95/116


7 Consistncia e Replicao 7.5 Protocolos de Consistncia
7.5.1 Consistncia Contnua
a idia que quando o servidor Sk percebe que Sj no est
no passo de atualizao submetida por Sk, ele encaminha
escritas do seu log de escritas para Si;
este encaminhamento efetivamente avana a viso TWk[ i,k ]
que Sk tem de TW[ i,k ] tornando o desvio, ou seja, TW[ i,k ] -
TWk[ i,k ] menor, ou seja, Sk avana na view.

Lus F. Faina - 2014 Pg. 96/116


7 Consistncia e Replicao 7.5 Protocolos de Consistncia
7.5.2 Protocolo Primary-Based
Na prtica, verifica-se que aplicaes distribudas geralmente
seguem modelos de consistncia fceis de serem entendidos,
p.ex., desvio numrico ou desvio de idade;
se considerarmos modelos que tratam a consistncia de
ordenao de operaes ou a consistncia sequencial;
verifica-se que so populares aqueles modelos nos quais as
operaes podem ser agrupadas por locks ou por transaes;
a medida que os modelos de consistncia tornam-se mais
difceis de serem entendidos pelos desenvolvedores, os mesmos
so ignorados ainda que melhorem a performance.

Lus F. Faina - 2014 Pg. 97/116


7 Consistncia e Replicao 7.5 Protocolos de Consistncia
7.5.2 Protocolo Primary-Based
Na consistncia sequencial, cada item de dado x do data store
tem um primrio associado, que responsvel pela coordenao
de operaes de escrita em x => primary-based protocols.

Remote-Write Protocols - todas as operaes de escrita so


encaminhadas para servidor nico e fixo, enquanto as operaes
de leitura so mantidas localmente.
primrio realiza a atualizao na sua cpia local para x e, na
sequncia, encaminha a atualizao para o servidor de backup,
que por sua vez informa ao primrio a concluso da atualizao.

Lus F. Faina - 2014 Pg. 98/116


7 Consistncia e Replicao 7.5 Protocolos de Consistncia
7.5.2 Protocolo Primary-Based
Fig. 7.20 Princpio dos Protocolos Primary-Based

Lus F. Faina - 2014 Pg. 99/116


7 Consistncia e Replicao 7.5 Protocolos de Consistncia
7.5.2 Protocolo Primary-Based
problema potencial - processo que iniciou a atualizao pode
ter que esperar um longo tempo para continuar, pois normalmente
a atualizao implementada como operao bloqueante;
uma alternativa o uso de operaes no bloqueantes, assim,
to logo tenha atualizado sua cpia local de x, o mesmo retorna
o reconhecimento para o solicitante;
somente depois solicita aos servidores de backup que
procedam com a atualizao em suas cpias locais.
problema - clientes no sabem com certeza que operaes de
atualizao foram de fato complementadas, ou seja, so
problemas relacionados a tolerncia a falhas.

Lus F. Faina - 2014 Pg. 100/116


7 Consistncia e Replicao 7.5 Protocolos de Consistncia
7.5.2 Protocolo Primary-Based
Local-Write Protocols - quando um processo quer atualizar
um item de dado x, ele localiza a cpia primria de x e move
o item da dado x da cpia primria para a sua localizao.
operaes de escrita sucessivas so realizadas localmente,
enquanto processos de leitura acessam suas cpias locais;
atualizaes so propagadas para as rplicas aps o primrio
completar, ou seja, cada cpia local atualizar e retornar.

Lus F. Faina - 2014 Pg. 101/116


7 Consistncia e Replicao 7.5 Protocolos de Consistncia
7.5.2 Protocolo Primary-Based
Fig. 7.20 Protocolo Primary-Based no qual o primrio migra
para o processo que quer realizar a atualizao.

Lus F. Faina - 2014 Pg. 102/116


7 Consistncia e Replicao 7.5 Protocolos de Consistncia
7.5.2 Protocolo Primary-Based
e.g., computadores mveis que operam em modo disconectado
podem utilizar o protocolo primary-based com escrita local;
antes de se desconectar, o computador torna-se o servidor
primrio para cada item de dado que ele espera atualizar;
enquanto desconectado, todas as atualizaes so realizadas
localmente, enquanto outros processos podem efetuar leituras nas
suas cpias locais, mas nenhuma atualizao;
mais tarde, atualizaes so propagadas para os backups,
trazendo o data store para o estado consistente.

Lus F. Faina - 2014 Pg. 103/116


7 Consistncia e Replicao 7.5 Protocolos de Consistncia
7.5.3 Protocolos Replicated-Write
Replicated-Write Protocols - operaes de escrita podem ser
realizadas em mltiplas rplicas ao invs de somente uma, como
no caso de primary-based replicas.
distines podem ser estabelecidas entre replicao ativa, na
qual uma operao encaminhada para todas as rplicas, e
protocolos de consistncia baseados em votao majoritria.

Lus F. Faina - 2014 Pg. 104/116


7 Consistncia e Replicao 7.5 Protocolos de Consistncia
7.5.3 Protocolos Replicated-Write
active replication - cada rplica tem um processo associado
que realiza operaes de atualizao;
atualizaes so propagadas atravs das operaes de escrita
que causam as atualizaes, ou seja, operaes so enviadas
para cada uma das rplicas.
problema - operaes precisam ser realizadas na mesma ordem
em todas as rplicas - backups, exigindo um mecanismo
multicast totalmente ordenado;
ainda que implementado com o relgio lgico de Lamport, o
multicasting no escalvel em sistemas distribudos grandes.

Lus F. Faina - 2014 Pg. 105/116


7 Consistncia e Replicao 7.5 Protocolos de Consistncia
7.5.3 Protocolos Replicated-Write
quorum-based protocols - clientes precisam requerer e
adquirir a permisso de mltiplos servidores antes de ler ou
escrever um item de dado replicado.
e.g., considere um sistema de arquivo distribudo e suponha que
um arquivo est replicado em N servidores;
podemos estabelecer que para atualizar o arquivo, um cliente
precisa contactar ao menos dos servidores + 1 e solicit-los
que concordem com a atualizao;
uma vez que tenham concordado, o arquivo modificado e um
novo nro. de verso associado ao novo arquivo;
procedimento anlogo vlido para ler um arquivo replicado.

Lus F. Faina - 2014 Pg. 106/116


7 Consistncia e Replicao 7.5 Protocolos de Consistncia
7.5.3 Protocolos Replicated-Write
e.g., considere 05 servidores e um cliente determina que 03
deles tem a verso 8 de um dado arquivo, impossvel que os
outros 02 tenham a verso 9 ?
qualquer atualizao bem sucedida da verso 08 para a 09
requer que 03 servidores tenham concordado, e no 02;
portanto, impossvel que os outros 02 tenham a verso 09!

Lus F. Faina - 2014 Pg. 107/116


7 Consistncia e Replicao 7.5 Protocolos de Consistncia
7.5.3 Protocolos Replicated-Write
Gifford's Scheme - para ler um arquivo com N rplicas, um
cliente precisa montar um quorum de leitura, ou seja, um
coleo arbitrria de NR servidores ou mais;
para escrever em um arquivo, o cliente precisa montar um
quorum de escrita com ao menos NW servidores, de modo
que ** NR + NW > N e NW > N/2 sejam satisfeitas.
1a restrio previne conflitos de leitura-escrita;
2a restrio previne conflitos de escrita-escrita.

Obs.: somente depois de um nro apropriado de servidores


concordarem em participar, pode um arquivo ser lido ou escrito.

Lus F. Faina - 2014 Pg. 108/116


7 Consistncia e Replicao 7.5 Protocolos de Consistncia
7.5.3 Protocolos Replicated-Write
Fig. 7.22 03 exemplos do Algoritmo de Votao. a) Escolha
correta de um conjunto de leitura e escrita. b) Escolha que pode
conduzir a conflitos de escrita-escrita. c) Escolha correta, conhe-
cida como ROWA (Read Once, Write All)

Lus F. Faina - 2014 Pg. 109/116


7 Consistncia e Replicao 7.5 Protocolos de Consistncia
7.5.4 Protocolos Cache-Coherence
cache - caso especial de replicao no sentido que geral-
mente controlada pelos clientes e no pelos servidores.
cache-coherence protocols - garantem que a cache esteja
consistente com rplicas iniciadas pelo servidor e, no so
diferentes dos protocolos de consistncia vistos anteriormente.
solues de caching diferem na sua estratgia de deteco
de coerncia, ou seja, quando inconsistncias aparecem:
static solution - compilador faz a anlise necessria antes da execuo,
para determinar quais dados podem se tornar inconsistentes e, na
sequncia, simplesmente insere instrues para evitar inconsistncias.
dynamic solution - inconsistncias na cache so detectadas com o
servidor em tempo de execuo para ver quando durante uma transao
um dado na cache foi modificado.

Lus F. Faina - 2014 Pg. 110/116


7 Consistncia e Replicao 7.5 Protocolos de Consistncia
7.5.4 Protocolos Cache-Coherence
coherence enforcement strategy - variao de protocolos de
coerncia de cache, determina como as caches so mantidas
consistentes com as cpias armazenadas nos servidores;
soluo mais simples - no permitir que dados sejam mantidos
em caches, ou seja, dados compartilhados so mantidos so-
mente nos servidores que por sua vez mantm a consistncia ;
se, no entanto, dados compartilhados so mantidos em
cache, h 02 abordagens para garantir a coerncia:
01 deixar o servidor enviar a invalidao para todas as caches
quando um item de dado modificado;
02 servidor propaga a atualizao para todas as caches
quando um item de dado modificado.
Lus F. Faina - 2014 Pg. 111/116
7 Consistncia e Replicao 7.5 Protocolos de Consistncia
7.5.4 Protocolos Cache-Coherence
seja no envio da invalidao ou das atualizaes, ambas so
frequentemente suportadas por banco de dados dos clientes.

Tambm necessrio considerar o cenrio no qual um processo


modifica itens de dados na cache:
read-only caches - operaes de atualizao podem ser
realizadas somente pelos servidores.
write-through caches - permitir que o cliente modifique os dados
da cache e encaminhe a atualizao para o servidor.

Lus F. Faina - 2014 Pg. 112/116


7 Consistncia e Replicao 7.5 Protocolos de Consistncia
7.5.5 Implementando Consistncia Client-Centric
Normalmente, a implementao de consistncia tendo por base o
cliente direta, se aspectos de desempenho forem ignorados.
naive implementation - cada operao de escrita recebe um
identificador global nico, que atribudo pelo servidor para o qual
a operao de escrita foi submetida;
para cada cliente, 02 conjuntos de writes so mantidos:
conjunto de leituras para o cliente consiste de escritas relevantes para as
operaes de leitura realizadas por aquele cliente;
conjunto de escritas para o cliente consiste de escritas, ou os seus
identificadores, realizadas por aquele cliente.

Lus F. Faina - 2014 Pg. 113/116


7 Consistncia e Replicao 7.5 Protocolos de Consistncia
7.5.5 Implementando Consistncia Client-Centric
monotonic-read consistency :
quando um cliente realiza uma operao de leitura no servidor,
o servidor trata o conjunto de leituras do cliente para verificar
quais identificador de escrita ocorreram localmente;
se no, o cliente contacta outros servidores para garantir que
est atualizado antes de realizar a operao de leitura;
ocasionalmente, a operao de leitura pode ser encaminhada
para o servidor onde a operao de escrita j tenha ocorrido;
aps a operao de leitura ser completada, a operao de
escrita j concluda no servidor selecionado e que relevante
para a operao de leitura adicionada ao read set do cliente.

Lus F. Faina - 2014 Pg. 114/116


7 Consistncia e Replicao 7.5 Protocolos de Consistncia
7.5.5 Implementando Consistncia Client-Centric
.. possvel determinar exatamente onde a operao de escrita
indentificada no read set ocorreu, p.ex., incluindo o identificador
do servidor para o qual a operao foi submetida no identificador
da operao de escrita - write identifier;
cabe ao servidor, manter o log de operaes de escrita para
at mesmo repetir em outro servidor;
adicionalmente, operaes de escrita devem ser realizadas na
ordem em que foram submetidas, p.ex., permitindo que o cliente
gere nro. de sequncia global nico e inclu-lo no write identifier;
como o dado pode ser modificado apenas pelo proprietrio, o
ltimo pode manter o nro. de sequncia.

Lus F. Faina - 2014 Pg. 115/116


7 Consistncia e Replicao 7.5 Protocolos de Consistncia
7.5.5 Implementando Consistncia Client-Centric
monotonic-write consistency :
quando o cliente inicia uma nova operao de escrita, o
servidor recebe o write set do cliente;
na sequncia, garante que as operaes de escrita identifica-
das sejam realizadas primeiro e na ordem correta;
aps executar a nova operao, o identificador de escrita da
operao adicionado ao write set;

Obs.: Atualizar o servidor com o write set do cliente, introduz


considervel aumento no tempo de resposta uma vez que o
cliente deve esperar a operao ser concluda.

Lus F. Faina - 2014 Pg. 116/116

Você também pode gostar