... 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.
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:
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.