116
Luís F. Faina - 2014 Pg. 1/116 Cap. 07 – Consistência e Replicação 7.1 – Introdução 7.1.1 Razões para a Replicação 7.1.2 Replicação como Técnica de Escalabilidade 7.2 – Modelos de Consistência “Data-Centric” 7.2.1 Consistência Contínua 7.2.2 Ordenação Consistente de Operações 7.3 – Modelos de Consistência “Client-Centric” 7.3.1 Consistência Eventual 7.3.2 Leituras Monotônicas 7.3.3 Escritas Monotônicas

Cap. 07 – Consistência e Replicação - Faculdade de …faina/BCC_Crs/GSI028-2014-1S/DL/DS-Ch07.pdf · 7.1.2 Replicação como Técnica de Escalabilidade 7.2 – Modelos de Consistência

Embed Size (px)

Citation preview

Luís F. Faina - 2014 Pg. 1/116

Cap. 07 – Consistência e Replicação

7.1 – Introdução7.1.1 Razões para a Replicação

7.1.2 Replicação como Técnica de Escalabilidade

7.2 – Modelos de Consistência “Data-Centric”7.2.1 Consistência Contínua

7.2.2 Ordenação Consistente de Operações

7.3 – Modelos de Consistência “Client-Centric”7.3.1 Consistência Eventual

7.3.2 Leituras Monotônicas

7.3.3 Escritas Monotônicas

Luís F. Faina - 2014 Pg. 2/116

… Cap. 07 – Consistência e Replicação

7.3 – Modelos de Consistência “Client-Centric”...

7.3.4 Leia suas Escritas

7.3.5 Escritas seguem Leituras

7.4 – Gerenciamento de Replicação

7.4.1 Possicionamento do Servidor de Réplica

7.4.2 Localização e Replicação de Conteúdo

7.4.3 Distribuição de Conteúdo

Luís F. Faina - 2014 Pg. 3/116

… Cap. 07 – Consistência e Replicação

7.5 – Protocolos de Consistência7.5.1 Consistência Contínua

7.5.2 Protocolo “Primary Based”

7.5.3 Protocolo “Replicated-Write”

7.5.4 Protocolo “Cache-Coherence”

7.5.5 Implementação de Consistência “Client-Centric”

Luís F. Faina - 2014 Pg. 4/116

Referências Bibliográficas

● 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 Distribuídos: Conceitos e Projeto, Bookman, 4th Edition, 2007, ISBN 9788560031498

● Notas de Aula do Prof. Ricardo Anido do Instituto de Computação (IC) da UNICAMP - www.ic.unicamp.br/~ranido/

Luís F. Faina - 2014 Pg. 5/116

7 Consistência e Replicação

7 Consistência e Replicação

● Replicação de Dados - consiste em manter múltiplas cópias de dados, chamadas de réplicas, em diferentes computadores.

● “problema” - manter a consistência entre as cópias, ou seja, quando um cópia é atualizada é necessário garantir que todas as outras cópias sejam também atualizadas.

● 1a Abordagem - Leslie Lamport (1978) - “Times, Clocks, and the Ordering of Events in a Distributed System”

● … tema de interesse em sistemas distribuídos e em banco de dados, mas sob diferentes aspectos.

Luís F. Faina - 2014 Pg. 6/116

7 Consistência e Replicação

… 7 Consistência e Replicação

● “contexto” - modelos de consistência para dados compartilhados são difíceis de serem implementados eficientemente em sistemas distribuídos de larga escala;

● … duas questões constituem os principais aspectos de projeto de implementação dos modelos de consistência: gerenciamento de réplicas e como réplicas são mantidas.

Luís F. Faina - 2014 Pg. 7/116

7 Consistência e Replicação – 7.1 Introdução

7.1.1 Razões para a Replicação

● “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]

● São várias as razões para replicação, das quais se destacam:

● “confiabilidade“ - réplicas garantem que não haverá um único ponto de falha no sistema.

● “disponibilidade“ - réplicas propiciam o aumento da disponibi- lidade do sistema como consequência da confiabilidade.

Luís F. Faina - 2014 Pg. 8/116

7 Consistência e Replicação – 7.1 Introdução

… 7.1.1 Razões para a Replicação

● … … razões para replicação, das quais se destacam:

● “transparência de falha“ - em caso de falha, o usuário pode ser movido para outra réplica sem notar que a falha ocorreu.

● “desempenho“ - balanceamento de carga, uso de “cache”, escalabilidade geográfica, aumento do sistema.

● “consistência de dados” - processo para manter uma informação uniforme conforme ela se move em uma rede ou entre vários processos de um computador.

● Obs.: … fato de existir múltiplas cópias de dados, objeto de leitura e escrita de vários processos, gera o problema de inconsistência.

Luís F. Faina - 2014 Pg. 9/116

7 Consistência e Replicação – 7.1 Introdução

7.1.2 Replicação como Técnica de Escalabilidade

● Replicação e “Caching” são largamente utilizadas como técnicas de escalabilidade para efeito de desempenho;

● … questões de escalabilidade normalmente aparecem na forma de problemas de desempenho, assim:

● … disponibilizar cópias de dados próximas aos processos que as utilizam pode melhorar o desempenho pela redução do tempo de acesso e, assim, resolver problemas de escalabilidade.

● “dilema” - modificação desses dados em uma réplica exige que as outras cópias sejam atualizadas para manter a consistência.

● “dilema” - propagar a modificação para cada réplica é um pro- cesso caro e pode causar perda de desempenho no sistema.

Luís F. Faina - 2014 Pg. 10/116

7 Consistência e Replicação – 7.1 Introdução

… 7.1.2 Replicação como Técnica de Escalabilidade

● … em muitos casos, a única solução é diminuir as restrições de consistência, ou seja, não exigir que a atualização seja executada como uma operação atômica => ganho de desempenho.

● … nesta abordagem, evita-se a sincronização global (instantânea) dos dados => ganho de desempenho.

Luís F. Faina - 2014 Pg. 11/116

7 Consistência e Replicação – 7.2 Modelos de Consistência “Data-Centric”

7.2 Modelos de Consistência “Data-Centric”

● “contexto” - modelos de consistência são analisados tradicional- mente por meio de operações de leitura/escrita sobre dados compartilhados (memória ou banco de dados compartilhado).

● “data store” - pode se encontrar fisicamente distribuído em diferentes máquinas e com as sequintes características:

● cada processo pode acessar dados do repositório através de um cópia local de todo o conteúdo do repositório;

● operações de escrita são propagadas para todas as cópias;

● operação de dados é classificada como escrita quando altera o dado, diferentemente da operação de leitura.

Luís F. Faina - 2014 Pg. 12/116

7 Consistência e Replicação – 7.2 Modelos de Consistência “Data-Centric”

… 7.2 Modelos de Consistência “Data-Centric”

● Fig. 7.1 – Organização geral de um “Data Store”, fisicamente distribuído e replicado sobre múltiplos processos.

Luís F. Faina - 2014 Pg. 13/116

7 Consistência e Replicação – 7.2 Modelos de Consistência “Data-Centric”

… 7.2 Modelos de Consistência “Data-Centric”

● “consistency model” - é essencialmente o contraste entre os processos e o repositório de dados, no sentido das regras acordadas entre os mesmos para manter a consistência.

● … processos que realizam a leitura de um dado esperam que o valor retornado seja o valor da última escrita nesse dado;

● … na ausência de um relógio global, é difícil definir qual operação de escrita é a última no contexto de sistemas distribuídos;

● … assim, modelos de consistência restringem os valores que uma operação de leitura pode retornar sobre um item de dados.

Luís F. Faina - 2014 Pg. 14/116

7 Consistência e Replicação – 7.2 Modelos de Consistência “Data-Centric”

7.2.1 Consistência Contínua

● “Yu e Vehdat” (2002) propõem 03 classes de inconsistências:

● desvio de valores numéricos entre réplicas ;

● desvio de idade entre réplicas;

● desvio em relação à ordenação de operações de escrita.

● “desvio de valor numérico” - … ocorre em aplicações onde os dados possuem semântica numérica.

● “solução óbvia” - definir um desvio numérico absoluto ou relativo entre os valores assumidos pelas cópias, assim:

● ... enquanto os valores estiverem dentro do limite estabelecido de desvio, serão considerados como consistentes.

Luís F. Faina - 2014 Pg. 15/116

7 Consistência e Replicação – 7.2 Modelos de Consistência “Data-Centric”

… 7.2.1 Consistência Contínua

● “desvio de valor numérico” - também pode ser entendido como o nro. de atualizações aplicadas a uma réplica, mas ainda não disponíveis para as demais réplicas.

● e.g., réplicas de registros de preços de ações

● desvio numérico absoluto - preço de uma ação entre as réplicas não deve variar mais que $ 0,02;

● desvio númerico relativo - diferença entre o valor de duas cópias não deve ser maior 5%.

Luís F. Faina - 2014 Pg. 16/116

7 Consistência e Replicação – 7.2 Modelos de Consistência “Data-Centric”

… 7.2.1 Consistência Contínua

● “desvio de idade” - relacionado com a diferença de tempo da data da versão atual para a data da última atualização.

● e.g., … réplica de uma previsão de tempo será considerada consistente por uma hora, independente do número de atualizações que ocorram nesse período.

Luís F. Faina - 2014 Pg. 17/116

7 Consistência e Replicação – 7.2 Modelos de Consistência “Data-Centric”

… 7.2.1 Consistência Contínua

● “desvio de ordenação” - ordem das operações de atualização em cada réplica podem ser diferentes dentro de um certo limite.

● … correções são feitas alterando a ordem dessas atualizações antes de persistí-las em definitivo.

● Obs.: … dependência de um acordo global de atualização, pode reverter atualizações já completadas para na sequência aplicá-las em uma ordem diferente de modo que se tornem permanentes.

Luís F. Faina - 2014 Pg. 18/116

7 Consistência e Replicação – 7.2 Modelos de Consistência “Data-Centric”

… 7.2.1 Consistência Contínua

● “Yu e Vehdat” (2002) introduziram o conceito de unidade de consistência ou “Consistency Unit” ou “conit” - especifica a unidade sobre a qual a consistência deve ser medida;

● … ou seja, um “conit” pode ser definido como um registro repre- sentando 01 estoque único ou relatório individual de tempo.

● e.g., considere 02 réplicas “A” e “B” com um “conit” contendo os itens de dados “x” e “y”;

● … cada réplica contém um relógio vetorial bidimensional VCi (Cap. 06), com a notação “t, i” expressando que uma operação foi realizada pela réplica “i” no tempo lógico “t” (tempo local).

Luís F. Faina - 2014 Pg. 19/116

7 Consistência e Replicação – 7.2 Modelos de Consistência “Data-Centric”

… 7.2.1 Consistência Contínua

● Fig. 7.2 – Exemplo do rastreamento do desvio de consistência extraído do artigo “Yu e Vehdat” (2002).

Luís F. Faina - 2014 Pg. 20/116

7 Consistência e Replicação – 7.2 Modelos de Consistência “Data-Centric”

… 7.2.1 Consistência Contínua

● Note que há a uma negociação entre “conits” com granularidade fina e “conits” com granularidade grossa;

● e.g. considere um “conit” como um banco de dados completo, assim a atualização de dados está condicionada a todo o conjunto de dados naquele unidade de consistência;

● … como consequência, este cenário pode produzir réplicas rápidas não consistentes – estado inconsistente.

● e.g., considere 02 réplicas que se diferem não mais do que por uma única atualização – contexto de granularidade grossa, ou seja, um “conit” consiste de 02 itens de dados (Fig. 7.3)

Luís F. Faina - 2014 Pg. 21/116

7 Consistência e Replicação – 7.2 Modelos de Consistência “Data-Centric”

… 7.2.1 Consistência Contínua

● Fig. 7.3 – Escolha da granularidade correta de um “conit”. a. 02 atualizações disparam uma propagação de atualização.

Luís F. Faina - 2014 Pg. 22/116

7 Consistência e Replicação – 7.2 Modelos de Consistência “Data-Centric”

… 7.2.1 Consistência Contínua

● Fig. 7.3 – Escolha da granularidade correta de um “conit”. a. 02 atualizações disparam uma propagação de atualização. b. não há a necessidade de propagação de atualização.

Luís F. Faina - 2014 Pg. 23/116

7 Consistência e Replicação – 7.2 Modelos de Consistência “Data-Centric”

… 7.2.1 Consistência Contínua

● “conits” grandes - levam a réplica ao estado de inconsistência mais rápido quando comparada com “conits” pequenos.

● “conits” pequenos - aumentam o número de “conits” que precisam ser gerenciadas e, por consequência, afetam o desempenho.

● Obs.: … para implementação deste mecanismos, faz-se neces- sário criar protocolos de consistência, por outro lado, identificar os seus requisitos não é uma tarefa nada fácil.

Luís F. Faina - 2014 Pg. 24/116

7 Consistência e Replicação – 7.2 Modelos de Consistência “Data-Centric”

7.2.2 Ordenação Consistente de Operações

● Nesta seção, discutiremos operações ordenadas de forma consistente sobre dados compartilhados e replicados.

● … neste contexto, quando tentativas de atualização em réplicas necessitam ser concluídas, as réplicas terão que acordar quanto a ordenação global destas atualizações.

● … é necessário que as réplicas concordem na ordenação consistente das atualizações para garantir a consistência.

Luís F. Faina - 2014 Pg. 25/116

7 Consistência e Replicação – 7.2 Modelos de Consistência “Data-Centric”

… 7.2.2 Ordenação Consistente de Operações

● Para melhor entendimento dos modelos a serem discutidos, pro- cessos realizam operações de escrita “Wi(x)a” e leitura “Ri(x)a” sobre dados ao longo do tempo, para tanto, seja a notação:

● 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 operações de escrita e leitura.

Luís F. Faina - 2014 Pg. 26/116

7 Consistência e Replicação – 7.2 Modelos de Consistência “Data-Centric”

… 7.2.2 Ordenação Consistente de Operações

● Fig. 7.4 – Comportamento de 02 processos operando sobre o mesmo item de dado “x” com operações de escrita e leitura.

● “Wi(x)a” é inicialmente realizada sobre uma cópia local do reposi- tório de dados para P1 e, subsequentemente, é propagada para as outras cópias do repositório de dados;

● P2 lê mais tarde o valor “NIL” e algum tempo depois o valor “a” da sua cópia local do repositório de dados;

● … leva-se um tempo para propagar a atualização de “x” para P2, o que é perfeitamente aceitável.

Luís F. Faina - 2014 Pg. 27/116

7 Consistência e Replicação – 7.2 Modelos de Consistência “Data-Centric”

… 7.2.2 Ordenação Consistente de Operações

● “consistência sequencial” - importante no modelo de consistên- cia centrado em dados, foi definida por Lamport em 1979 no contexto de memória compartilhada de sist. multiprocessados.

● “definição” - resultado de qualquer execução é o mesmo que seria se as operações de leitura e escrita fossem executadas em alguma ordem sequencial por todos os processos no repositório;

● … onde, as operações de cada processo aparecem nesta sequência em uma ordem especificada pelo seu programa.

● Obs.: … definição sugere que quando processos executam concorrentemente em diferentes máquinas, um entrelaçamento válido de operações de leitura e escrita é aceitável, desde que todos os processos enxerguem o mesmo entrelaçamento.

Luís F. Faina - 2014 Pg. 28/116

7 Consistência e Replicação – 7.2 Modelos de Consistência “Data-Centric”

… 7.2.2 Ordenação Consistente de Operações

● … neste contexto, um processo enxerga “writes” de todos os processos, mas somente seus próprios “reads”.

● Fig. 7.5 – a. consistência sequencial do repositório de dados; b. repositório de dados sem consistência sequencial.

Luís F. Faina - 2014 Pg. 29/116

7 Consistência e Replicação – 7.2 Modelos de Consistência “Data-Centric”

… 7.2.2 Ordenação Consistente de Operações

● a. mostra um depósito de dados sequencialmente consistente, apesar de P3 e P4 terem lido um valor antigo;

● b. mostra um depósito de dados não consistente porque P3 e P4 não enxergam a mesma intercalação de operações de escrita.

● Fig. 7.5 – a. consistência sequencial do repositório de dados; b. repositório de dados sem consistência sequencial.

Luís F. Faina - 2014 Pg. 30/116

7 Consistência e Replicação – 7.2 Modelos de Consistência “Data-Centric”

… 7.2.2 Ordenação Consistente de Operações

● e.g., considere 03 processos executando concorrentemente onde os itens de dados são formados por 03 variáveis “x”, “y” e “z” de um repositório de dados compartilhado.

● variáveis são inicializadas com o valor “0”;

● operação de atribuição corresponde a operação de escrita;

● declaração de impressão corresponde a 02 operações de leitura.

● Fig. 7.6 – 03 processos executando concorrentemente.

Luís F. Faina - 2014 Pg. 31/116

7 Consistência e Replicação – 7.2 Modelos de Consistência “Data-Centric”

… 7.2.2 Ordenação Consistente de Operações

● “análise” - 06 declarações, 720 (6*5*4*3*2*1 = 6!) sequências de execução são possíveis, ainda que algumas sejam inválidas;

● … são 120 (5!) sequências que iniciam com “x ← 1”, ½ das quais tem “print(x,z)” antes de “y ← 1” o que viola a sequência no prog.;

● … ½ das sequências tem “print(x,y)” antes de “z ← 1”, o que também viola a ordem do programa;

● … análise semelhante cabe para sequências iniciadas por “y ← 1” e sequências iniciadas por “z ← 1”;

● … deste total, 90 sequências são válidas, 30 iniciando com “x ← 1”, 30 iniciando com “y ← 1” e 30 com “z ← 1”.

Luís F. Faina - 2014 Pg. 32/116

7 Consistência e Replicação – 7.2 Modelos de Consistência “Data-Centric”

… 7.2.2 Ordenação Consistente de Operações

● Fig. 7.7 – 04 sequências válidas de execução para os processos P1, P2, e P3 como mostrados na Fig. 7.6.

● eixo imaginário na vertical representa a linha do tempo.

Luís F. Faina - 2014 Pg. 33/116

7 Consistência e Replicação – 7.2 Modelos de Consistência “Data-Centric”

… 7.2.2 Ordenação Consistente de Operações

● “signature” - concatenação das saídas de P1, P2, e P3, nesta ordem, formando um “string” de 06 bits que caracteriza uma sequência particular de comandos / declarações.

● … nem todas as 64 combinações de bits são válidas:

● p.ex., 000000 não é permitida pois implica que as declarações “print(y,z)”, “print(x,z)” e “print(x,y)” são executadas antes de “x ← 1”, “y ← 1”, “z ← 1”

● … viola a ordem de execução definida pelos programas.

● p.ex., 001001 também não é permitida, pois se assumirmos que P1 inicia a execução, então os 02 primeiros bits representam “print(y,z)”;

● … os próximos 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.

Luís F. Faina - 2014 Pg. 34/116

7 Consistência e Replicação – 7.2 Modelos de Consistência “Data-Centric”

… 7.2.2 Ordenação Consistente de Operações

● “consistência causal” - proposto por “Hutto e Ahamad” (1990) representa uma consistência sequencial fraca para garantir concorrência em memória compartilhada distribuída.

● … faz distinção entre eventos potencialmente relacionados por causalidade e os que não são 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.: operações não relacionadas por causalidade são comu- mente denominadas concorrentes.

Luís F. Faina - 2014 Pg. 35/116

7 Consistência e Replicação – 7.2 Modelos de Consistência “Data-Centric”

… 7.2.2 Ordenação Consistente de Operações

● “consistência por causalidade” - “data store” é considerado consistente por causalidade se satisfaz a seguinte condição:

● … escritas que são potencialmente relacionadas por causalidade devem ser vistas por todos os processos na mesma ordem;

● … escritas concorrentes,ou seja, sem relação de causalidade, podem ser vistas em ordem diferente em máquinas diferentes.

● “implementação” - consistência causal exige que as dependências entre operações seja monitorada, o que pode ser feito com o uso de marcas de tempo vetoriais.

● e.g., como exemplo de consistência causal, considere 04 proces- sos P1, P2, P3 e P4 e uma sequência de eventos.

Luís F. Faina - 2014 Pg. 36/116

7 Consistência e Replicação – 7.2 Modelos de Consistência “Data-Centric”

… 7.2.2 Ordenação Consistente de Operações

● e.g., como exemplo de consistência causal, considere 04 proces- sos P1, P2, P3 e P4 e uma sequência de eventos.

● “W2(x)b” e “W1(x)c” são concorrentes, assim não é exigido que todos os processos enxerguem estas operações na ordem.

● Fig. 7.8 – Sequência de eventos com consistência de causali- dade, mas não com consistência sequencial.

Luís F. Faina - 2014 Pg. 37/116

7 Consistência e Replicação – 7.2 Modelos de Consistência “Data-Centric”

… 7.2.2 Ordenação Consistente de Operações

● a. “W2(x)b” potencialmente depende “W1(x)a” porque “b” pode ser um resultado envolvendo o resultado do cálculo de “a” - “R2(x)a”;

● … 02 operações de “write” estão relacionadas pela relação de causalidade, assim todos os processos devem exergar todas estas operações na mesma ordem.

● Fig. 7.9 – a. violação da consistência de causalidade; b. sequên- cia correta de eventos com consistência de causalidade.

Luís F. Faina - 2014 Pg. 38/116

7 Consistência e Replicação – 7.2 Modelos de Consistência “Data-Centric”

… 7.2.2 Ordenação Consistente de Operações

● b. “W2(x)b” potencialmente concorre com “W1(x)a”, pois a operação “R2(x)a” foi removida de P2;

● … consistência de causalidade não requer que escritas concorrentes sejam globalmente ordenadas.

● Fig. 7.9 – a. violação da consistência de causalidade; b. sequên- cia correta de eventos com consistência de causalidade.

Luís F. Faina - 2014 Pg. 39/116

7 Consistência e Replicação – 7.2 Modelos de Consistência “Data-Centric”

… 7.2.2 Ordenação Consistente de Operações

● “consistência causal” e “sequencial” - definidas no nível (granula- ridade) de operações de leitura e escrita por razões históricas;

● … em muitos casos este nível de granularidade fino não atende a granularide suportada pela aplicações;

● Normalmente, compartilhamento de dados é mantido através de mecanismos de sincronização para sincronização, enquanto as transações mantém o controle de concorrência.

● … ENTER_CS - significa que o dado no armazenamento local está atualizado, ou seja, leituras e escritas podem ser realizadas;

● … ao terminar as operações o processo invoca LEAVE_CS, pro- tegendo as operações do acesso concorrente.

● Obs.: operações são atomicamene executadas como unidades.

Luís F. Faina - 2014 Pg. 40/116

7 Consistência e Replicação – 7.2 Modelos de Consistência “Data-Centric”

… 7.2.2 Ordenação Consistente de Operações

● Neste ponto, é necessário dar semântica às operações ENTER_CS e LEAVE_CS através de variáveis de sincronização;

● … dentre as possíveis maneiras, em uma abordagem geral cada variável tem um dado associado que pode ser equivalente a um conjunto de dados compartilhados;

● … processo deve ter a posse das variáveis de sincronização para executar ENTER_CS, assim como deve liberar as variáveis de sincronização quando for executar LEAVE_CS.

● Obs.: Processos podem simultaneamente compartilhar uma variável de sincronização em modo não exclusivo, ou seja, podem ler mas não escrever no dado associado.

Luís F. Faina - 2014 Pg. 41/116

7 Consistência e Replicação – 7.2 Modelos de Consistência “Data-Centric”

… 7.2.2 Ordenação Consistente de Operações

● 03 critérios devem ser satisfeitos:

01 - aquisição de acesso para uma variável de sincronização não é concedida a um processo até que todas as atualizações referentes aos dados compartilhados seja realizada;

● … ou seja, todas as mudanças para um dado compartilhado devem se tornar visíveis, ou seja, devem ser atualizados.

02 - nenhum outro processo pode manter a variável de sincroni- zação, nem mesmo no modo não exclusivo, antes que o acesso no modo exclusivo para uma variável seja concedido;

● … ou seja, antes de atualizar um dado compartilhado, um processo precisa entrar na região crítica em modo exclusivo.

Luís F. Faina - 2014 Pg. 42/116

7 Consistência e Replicação – 7.2 Modelos de Consistência “Data-Centric”

… 7.2.2 Ordenação Consistente de Operações

● 03 critérios devem ser satisfeitos:

03 - após a concessão do acesso no modo exclusivo para uma variável de sincronização, o acesso ao modo não exclusivo por um outro processo para a variável de sincronização não pode ser realizado até que ele tenha consultado o dono da variável;

● … ou seja, se um processo deseja entrar na região crítica no modo não exclusivo, é necessário primeiro verificar como o proprietário da variável de sincronizaçãoa a mais recente cópia do dado compartilhado.

Luís F. Faina - 2014 Pg. 43/116

7 Consistência e Replicação – 7.2 Modelos de Consistência “Data-Centric”

… 7.2.2 Ordenação Consistente de Operações

● e.g., considere o exemplo de “consistência de entrada”, ou seja, em vez de operar o dado compartilhado por completo, “locks” são associados a cada item do dado compartilhado.

Acq(Lx) – Acquire for “x” Rel(Ly) – Release for “y”

● Fig. 7.10 – Sequência válida de eventos para a consistência de entrada – itens “x” e “y” compondo o dado compartilhado.

Luís F. Faina - 2014 Pg. 44/116

7 Consistência e Replicação – 7.2 Modelos de Consistência “Data-Centric”

… 7.2.2 Ordenação Consistente de Operações

● “problema da consistência de entrada” - associar adequadamente o dado com variáveis sincronização;

● “abordagem simples” - explicitar ao “middleware” quais dados serão acessados, semelhante quando é informado quais tabelas serão afetadas em uma transação.

● “consistência” versus “coerência” - importante entender a diferença entre 02 conceitos que estão relacionados.

● e.g., considere o cenário de um conjunto de processos que executam operações de leitura/escrita em um conj. de dados.

Luís F. Faina - 2014 Pg. 45/116

7 Consistência e Replicação – 7.2 Modelos de Consistência “Data-Centric”

… 7.2.2 Ordenação Consistente de Operações

● e.g., considere o cenário de um conjunto de processos que executam operações de leitura/escrita em um conj. de dados.

● “Modelo de Consistência” - descreve o que se espera de um conjunto de itens de dados quando vários processos operam de forma concorrente.

● “Modelo de Coerência” - descreve o que se espera de um único item de dado replicado em vários lugares quando cada cópia é submetida a um conj. de regras do modelo de coerência.

● e.g., … modelo de consistência sequencial aplicado a um único item de dado, na prática, ocorrendo operações de escritas concorrentes, todos os processos eventualmente verão a mesma ordem de “updates”.

Luís F. Faina - 2014 Pg. 46/116

7 Consistência e Replicação – 7.3 Modelos de Consistência “Client-Centric”

7.3 Modelos de Consistência “Client-Centric”

● Os modelos de consistência descritos anteriormente tem por objetivo prover uma consistência global do repositório de dados;

● … ou seja, a suposição é a de processos concorrentes podem simultaneamente atualizar o repositório e, assim, é necessário consistência face a concorrência entre os mesmos.

● e.g., em modelos baseados em objetos, o repositório garante que uma cópia atual do objeto será fornecida ao processo chamador;

● … durante a chamada, nenhum outro processo pode interferir, ou seja, acesso exclusivo é concedido ao processo chamador.

Luís F. Faina - 2014 Pg. 47/116

7 Consistência e Replicação – 7.3 Modelos de Consistência “Client-Centric”

… 7.3 Modelos de Consistência “Client-Centric”

● … ou seja, manipular operações concorrentes em dados com- partilhados enquanto se mantém a consistência sequencial é fundamental em sistemas distribuídos.

● Por razões de desempenho, consistência sequencial pode ser garantida somente com o uso de mecanismos de sincronização tais como transações e “locks”.

● Nesta seção discutiremos uma classe especial de “data stores” distribuídos caracterizados pela ausência de atualizações simultâ- neas ou quando acontecem podem ser resolvidas facilmente.

● … tais modelos de consistência são denominados “eventualmente consistentes” e de modo geral escondem as inconsistências.

Luís F. Faina - 2014 Pg. 48/116

7 Consistência e Replicação – 7.3 Modelos de Consistência “Client-Centric”

7.3.1 Consistência Eventual

● Processos podem operar de modo concorrente de diferentes maneiras, bem como pode variar o nível de consistência que deve ser garantido aos dados objetos do compartilhamento.

● e.g., … em muitos sistemas de banco de dados os processos executam muito mais operações de leitura do que de atualização;

● … neste contexto, como atualizações rápidas devem estar disponíveis para processos de leitura?

● e.g., … no DNS só a autoridade nomeada responderá pelo nome;

● … consequentemente, conflitos de atualização nunca existirão, porém, ainda assim existem conflitos de “read-write”.

● solução - processo leitor espera algum tempo após completar a atualização para então executar a operação de leitura.

Luís F. Faina - 2014 Pg. 49/116

7 Consistência e Replicação – 7.3 Modelos de Consistência “Client-Centric”

… 7.3.1 Consistência Eventual

● e.g., … atualização de páginas na Web se dá por uma única autoridade, tal como o “webmaster” ou proprietário das páginas;

● … ou seja, não há conflitos “write-write”, mas por outro lado, para melhorar o desempenho, “browsers” e “proxies” são configurados para buscar e manter páginas na “cache”;

● … o que pode ocasionar o retorno de páginas não atualizadas, ou seja, a versão da página é uma versão mais antiga do que aquela mantida pelo servidor Web atual.

● Obs.: … exemplos descritos podem ser vistos como casos de repositórios de dados distribuídos e replicados que toleram relativamente um alto grau de inconsistência.

Luís F. Faina - 2014 Pg. 50/116

7 Consistência e Replicação – 7.3 Modelos de Consistência “Client-Centric”

… 7.3.1 Consistência Eventual

● Neles, se nenhuma atualização acontecer por um tempo longo, todas as réplicas estarão gradualmente inconsistentes, ou seja, “eventualmente consistente” - o que exige que atualizações sejam propagadas a todas as réplicas.

● … conflitos de atualizações são geralmente mais fáceis e baratos de serem resolvidas, desde que um pequeno grupo de processos executem as operações de escrita.

● Normalmente consistência eventual funciona bem na medida que clientes acessam as mesmas réplicas;

● … entretanto, surgem problemas quando diferentes réplicas são objeto de acesso em um curto período de tempo (Fig. 7.11).

Luís F. Faina - 2014 Pg. 51/116

7 Consistência e Replicação – 7.3 Modelos de Consistência “Client-Centric”

… 7.3.1 Consistência Eventual

● Fig. 7.11 – Princípio de um Usuário Móvel acessando diferentes réplicas de um Repositório de Dados Distribuído.

Luís F. Faina - 2014 Pg. 52/116

7 Consistência e Replicação – 7.3 Modelos de Consistência “Client-Centric”

… 7.3.1 Consistência Eventual

● “Terry” et al. (1994) (1998) constituem a origem dos trabalhos de modelos de consistência centrados no cliente com o intuito de amenizar os efeitos discutidos no exemplo anterior;

● “client-centric consistency” - provê garantias para um único cliente em relação aos acessos consistentes ao “data store”;

● … no entanto, não dá garantias de consistências para acessos concorrentes de 02 ou mais clientes.

● Terry et al. propõem 4 diferentes modelos de consistência:

** Leituras Monotônicas ** Escritas Monotônicas

** Leia suas Escritas ** Escritas seguem Leituras

Luís F. Faina - 2014 Pg. 53/116

7 Consistência e Replicação – 7.3 Modelos de Consistência “Client-Centric”

… 7.3.1 Consistência Eventual

● Terry et al. (1994) (1998) propuseram 04 diferentes modelos de consistência para um repositório de dados fisicamente distribuído em diferentes máquinas e com as seguintes características:

● … quando um processo acessa do “data store”, ele o faz na cópia local ou na cópia mais próxima, embora em princípio, qualquer cópia estaria apta para ser operada/manuseada;

● … operações de leitura e escrita são realizadas na cópia local e atualizações são eventualmente propagadas para todas as cópias

● … cada item de dado tem proprietário associado, ou seja, um processo que tem permissão para modificar aquele item, assim, evita-se conflitos do tipo “escrita-escrita”.

Luís F. Faina - 2014 Pg. 54/116

7 Consistência e Replicação – 7.3 Modelos de Consistência “Client-Centric”

… 7.3.1 Consistência Eventual

● Modelos de Consistência “Client-Centric” são descritos utilizando-se a notação a seguir:

● Seja xi[t1] a versão do dado “x” na cópia local “Li” no tempo “t1”;

● … versão xi[t1] é o resultado de uma série de operações de escrita na cópia local “Li” que ocorreram desde a inicialização – conjunto que é denotado por “WS( xi[t1] )”;

● … se as operações em WS(xi[t1]) também forem executadas em uma cópia local “Lj” no tempo “t2”, escrevemos “WS( xi[t1]; xj[t2] )”;

● … se a ordenação de operações ou a temporização estiver clara no contexto, o índice de tempo será omitido.

Luís F. Faina - 2014 Pg. 55/116

7 Consistência e Replicação – 7.3 Modelos de Consistência “Client-Centric”

7.3.2 Leituras Monotônicas

● “monotonic-read consistency” - se um processo ler o valor de um item de dado “x”, novas operações 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 não verá uma versão anterior de “x” em “t2” - “t2 > t1”.

● e.g., considere 02 cópias 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 operações executadas por um único processo “P”, aqui representadas em negrito enquanto a linha pontilhada representa a ordem em que as operações são executadas - “R(x1)” antes de “R(x2)”.

Luís F. Faina - 2014 Pg. 56/116

7 Consistência e Replicação – 7.3 Modelos de Consistência “Client-Centric”

… 7.3.2 Leituras Monotônicas

● “P” inicialmente executa uma leitura em “x” na cópia local “L1”, retornando o valor “x1” naquele momento, resultado da operação de escrita “WS(x1)” sobre “L1”;

● … mais tarde, “P” executa uma leitura em “x” na cópia local “L2”, retornando o valor “x2” naquele momento, no contexto onde “WS(x1)” foi propagada para “L2” => “WS(x1,x2)”

● Fig. 7.12 – Operações de leitura executadas por “P” em 02 cópias locais do mesmo “data store”. a) “monotonic-read consistency”

Luís F. Faina - 2014 Pg. 57/116

7 Consistência e Replicação – 7.3 Modelos de Consistência “Client-Centric”

… 7.3.2 Leituras Monotônicas

● Em contraste, Fig. 7.12 b) mostra que a consistência de leituras monotônicas não é garantida pois “WS(x1)” não se propagou para “L2”, pois apenas “WS(x2)” foi realizada;

● … não há garantias que este conjunto contenha todas as operações contidas em “WS(x1)”.

● Fig. 7.12 – Operações de leitura executadas por “P” em 02 cópias locais do mesmo “data store”. a) “monotonic-read consistency” b) “data store” não garante a leituras monotônicas.

Luís F. Faina - 2014 Pg. 58/116

7 Consistência e Replicação – 7.3 Modelos de Consistência “Client-Centric”

7.3.3 Escritas Monotônicas

● “monotonic-write consistency” - uma operação de escrita em um dado “x” é completada antes de alguma operação de escrita subsequente do mesmo processo sobre o mesmo dado “x”.

● … ou seja, uma operação de escrita executada significa que a cópia na qual operações sucessivas forem realizadas reflete operações de escrita anteriormente executadas pelo mesmo processo, independente do local onde foi iniciada.

● e.g., considere 02 cópias 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 operações executadas por um único processo “P”, aqui representadas em negrito enquanto a linha pontilhada representa a ordem em que as operações são executadas - “W(x1)” antes de “W(x2)”.

Luís F. Faina - 2014 Pg. 59/116

7 Consistência e Replicação – 7.3 Modelos de Consistência “Client-Centric”

… 7.3.3 Escritas Monotônicas

● Fig. 7.13 a) … para garantir a consistência monotônica de escritas, é necessário que as operações de escrita anteriores tenham sido propagadas para as demais cópias.

● Fig. 7.13 b) mostra cenário onde a consistência de escritas mono- tônicas não é garantida, pois “WS(x1)” não foi propagada para “L2”

● Fig. 7.13 – Operações de escritas executadas por “P” em 02 cópias locais do mesmo “data store”. a) “data store” com consistência de escritas monotônicas; b) “data store” que não garante a consistência de escritas monotônicas.

Luís F. Faina - 2014 Pg. 60/116

7 Consistência e Replicação – 7.3 Modelos de Consistência “Client-Centric”

7.3.4 Leia suas Escritas

● “read-your-wristes consistency” - efeito de operações de escrita por um processo em um item de dado “x” será visto por uma leitura subsequente em “x” pelo mesmo processo.

● … ou seja, operação de escrita é sempre completada antes de uma operação de leitura subsequente executada pelo mesmo processo, independente de onde a operação foi executada.

● e.g., considere 02 cópias 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 operações executadas por um único processo “P”, aqui representadas em negrito enquanto a linha pontilhada representa a ordem em que as operações são executadas - “W(x1)” antes de “R(x2)”.

Luís F. Faina - 2014 Pg. 61/116

7 Consistência e Replicação – 7.3 Modelos de Consistência “Client-Centric”

… 7.3.4 Leia suas Escritas

● Fig. 7.14 a) - “P” executa uma operação de escrita “W(x1)” e mais tarde executa uma operação de leitura “R(x2)” em uma outra cópia com a garantia de “W(x1)” foi propagada para “L2” => “W(x1,x2)”

● Fig. 7.14 b) - “W(x1)” foi mantida aparte da atualização “W(x2)”, ou seja, o efeito da operação prévia de escrita não foi propagada.

● Fig. 7.14 a) “data store” que provê “read-your-writes consistency”. b) “data store” que não provê “read-your-writes consistency”.

Luís F. Faina - 2014 Pg. 62/116

7 Consistência e Replicação – 7.3 Modelos de Consistência “Client-Centric”

7.3.5 Escritas seguem Leituras

● “writes-follow-reads consistency” - uma operação de escrita no item de dado “x” após uma operação de leitura em “x” pelo mesmo processo é realizada em uma cópia de “x” atualizada com o valor mais recentemente lido por aquele processo.

● e.g., considere 02 cópias 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 operações executadas por um único processo “P”, aqui representadas em negrito enquanto a linha pontilhada representa a ordem em que as operações são executadas - “R(x1)” antes de “W(x2)”.

Luís F. Faina - 2014 Pg. 63/116

7 Consistência e Replicação – 7.3 Modelos de Consistência “Client-Centric”

… 7.3.5 Escritas seguem Leituras

● Fig. 7.15 a) “P” executa uma operação de leitura “R(x1)” e mais tarde executa uma operação de escrita “W(x2)” em uma outra cópia com a garantia de “W(x1)” é parte de “W(x2)”

● Fig. 7.15 b) – não há garantia de que a operação em “L2” se deu sobre uma cópia que é consistente com aquela lida em “L1”.

● Fig. 7.15 a) “data store” com consistência “writes-follow-reads”. b) “data store” sem consistência “writes-follow-reads”.

Luís F. Faina - 2014 Pg. 64/116

7 Consistência e Replicação – 7.4 Gerenciamento de Réplica

7.4 Gerenciamento de Réplica

● “questão fundamental” - decidir onde, quando e por quem as réplicas devem ser posicionadas e quais mecanismos usar para manter as réplicas consistentes.

● … problema de possicionamento pode ser subdividido em 02 subproblemas: possicionamento de servidores de réplicas e possicionamento de conteúdo;

● … naturalmente que antes de definir o possicionamento do conteúdo, cabe o possicionamento dos servidores de réplicas.

Luís F. Faina - 2014 Pg. 65/116

7 Consistência e Replicação – 7.4 Gerenciamento de Réplica

7.4.1 Possicionamento do Servidor de Réplica

● “possicionamento” - trata-se de um problema de cunho com viez gerencial e/ou comercial do que um problema de otimização;

● … existem diversas maneiras de se calcular a melhor localização do servidor de réplicas, ou seja, como escolher as melhores “k” posições de “n” possíveis localizações.

● “Qui et al” (2001) assume a distância entre o cliente e a locali- zação dos servidores de réplicas como ponto de partida;

● … localizações medidas por latênca ou largura de banda.

● “solução” - escolher um servidor por vez de modo que a distância média entre eles e seus clientes seja a menor possível, dado que “k” servidores tenham sido possicionados de um total de “n” servidores => “n – k” localizações não são contabilizadas.

Luís F. Faina - 2014 Pg. 66/116

7 Consistência e Replicação – 7.4 Gerenciamento de Réplica

… 7.4.1 Possicionamento do Servidor de Réplica

● “Radoslavov et al” (2001) – consideram a topologia dos servido- res quanto aos “Autonomous Systems” - ASs desconsiderando a posição dos clientes;

● “autonomous systems” - rede na qual todos os nós executam o mesmo protocolo de roteamento e são mantidos e gerenciados pela mesma organização.

● “proposta” - considera o maior AS e possiciona o servidor no roteador com o maior número de interfaces de rede, na sequên- cia, repete o algoritmo para o segundo maior AS.

● ...considerando que clientes estão distribuídos na rede, o resul- tado alcançado para clientes que conheçam a localização dos servidores em relação aqueles que não conhece é similar.

Luís F. Faina - 2014 Pg. 67/116

7 Consistência e Replicação – 7.4 Gerenciamento de Réplica

… 7.4.1 Possicionamento do Servidor de Réplica

● “desvantagens” - ambos os algoritmos são computacionalmene caros e apresentam complexidade > O(N2), onde “N” representa o número de localizações possíveis de serem inspecionadas;

● … mesmo com alguns milhares de localizações faz-se necessário alguns minutos para encontrar o servidor mais próximo;

● … seu uso torna-se inaceitável, ainda mais na presença de “flash crowd” - rajada de requisições para um “site” específico.

Luís F. Faina - 2014 Pg. 68/116

7 Consistência e Replicação – 7.4 Gerenciamento de Réplica

… 7.4.1 Possicionamento do Servidor de Réplica

● “Szymaniak et al.” (2006) - desenvolveram uma maneira de encontrar rapidamente o local onde posicionar as réplicas:

● região é identificada como um coleção de nós de mesmo conteúdo que apresentem baixa latência entre os nós;

● “objetivo” - selecionar a região com maior demanda, ou seja, aquela com o maior nro. de nós e na sequência permitir que um dos nós atue como o servidor de réplicas.

● “idéia” - identificar “k” maiores “clusters” e escolher um nó de cada “cluster” para receber o conteúdo replicado;

● … inicialmente o espaço total é particionado em células e as “k” células mais densas são escolhidas para receber as réplicas.

Luís F. Faina - 2014 Pg. 69/116

7 Consistência e Replicação – 7.4 Gerenciamento de Réplica

… 7.4.1 Possicionamento do Servidor de Réplica

● Fig. 7.16 – Escolha do tamanho apropriado de uma célula para possicionamento do servidor de réplicas.

● “células muito grandes” - pode existir diversos clusters e, assim, um nro. pequeno de servidores de réplicas é selecionado;

● “células muito pequenas” - cluster espalhado por varias células e, assim, um nro. grande de servidores de réplicas é selecionado.

Luís F. Faina - 2014 Pg. 70/116

7 Consistência e Replicação – 7.4 Gerenciamento de Réplica

… 7.4.1 Possicionamento do Servidor de Réplica

● … tamanho apropriado por ser computado como um função simples da distância média entre 02 nós e o nro. de réplicas;

● … pode ser mostrado que o algoritmo apresenta desempenho tão 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 coleção de 64.000 nós é aproximadamente 50.000 vezes mais rápido.

Luís F. Faina - 2014 Pg. 71/116

7 Consistência e Replicação – 7.4 Gerenciamento de Réplica

7.4.2 Possicionamento de Conteúdo

● Quando se trata de possicionamento e replicação de conteúdo, 03 diferentes tipos de réplicas podem ser logicamente organizados.

● Fig. 7.17 – Organização lógica de diferentes tipos de cópias de um “data store” em 03 aneis concêntricos.

Luís F. Faina - 2014 Pg. 72/116

7 Consistência e Replicação – 7.4 Gerenciamento de Réplica

… 7.4.2 Possicionamento de Conteúdo

● “permanent replicas” - podem ser consideradas como o conjunto inicial de réplicas que constituem um “data store”;

● e.g., “sites” Web estão geralmente distribuídos em 02 formas:

● … arquivos que constituem o site são replicados em um nro. res- trito de servidores de uma mesma célula, assim, uma requisição é 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

● … semelhança entre ambos é que há um nro. reduzido de réplicas em que a configuração é mais ou menos estática.

Luís F. Faina - 2014 Pg. 73/116

7 Consistência e Replicação – 7.4 Gerenciamento de Réplica

… 7.4.2 Possicionamento de Conteúdo

● … organização similar está presente nos bancos de dados distribuídos - “OSZu & Valduriez” (1999);

● … bancos de dados são distribuídos e replicados em servidores que conjuntamente formam um “cluster” de servidores, comumen- te referenciados como “arquitetura nada-compartilhada”;

● “arquitetura nada-compartilhada” - memória secundária e a memória principal não são compartilhados pelos processadores.

● … ou seja, banco de dados é distribuído e possivelmente replicado em um nro. de “sites” dispersos geograficamente.

Luís F. Faina - 2014 Pg. 74/116

7 Consistência e Replicação – 7.4 Gerenciamento de Réplica

… 7.4.2 Possicionamento de Conteúdo

● “server-initiated replicas” - são cópias do “data store” criados pelo proprietário do “data store” para aumentar o desempenho;

● e.g., servidor em Nova York que repentinamente começa a receber uma rajada de requisições de um local distante;

● … talvez, seja necessário o uso de réplicas temporárias no local de origem das requisições ou ao menos próximo;

● … serviços de hospedagem Web oferecem uma coleção relativa- mente estática de servidores espalhados na Internet que podem manter e prover o acesso aos arquivos Web;

● “Sivasubramanian” et al. (2004) discute a visão geral de replicação em serviços de hospedagem na Web.

Luís F. Faina - 2014 Pg. 75/116

7 Consistência e Replicação – 7.4 Gerenciamento de Réplica

… 7.4.2 Possicionamento de Conteúdo

● Uma outra abordagem para Serviço de Hospedagem Web é descrita por “Rabinovich” et al. (1999):

● … algoritmo é projetado para suportar páginas Web para as quais assume-se que operações de atualização são raras comparadas com as operações de leitura;

● e.g., … servidores no serviço de hospedagem “web” podem decidir qual servidor está mais próximo de um cliente “C”, tendo por base as informações dos bancos de dados de roteamento;

● … se “C1” e “C2” compartilham o mesmo servidor mais próximo “P”, todas as requisições de acesso para o arquivo “F” no servidor “Q” vindas de “C1” e “C2” são registradas em “Q” com uma única contagem de acesso “cnt(P,F)” - Fig. 7.18

Luís F. Faina - 2014 Pg. 76/116

7 Consistência e Replicação – 7.4 Gerenciamento de Réplica

… 7.4.2 Possicionamento de Conteúdo

● … se “C1” e “C2” compartilham o mesmo servidor mais próximo “P”, todas as requisições de acesso para o arquivo “F” no servidor “Q” vindas de “C1” e “C2” são registradas em “Q” como uma única contagem de acesso “cnt(P,F)” - figura abaixo.

● Fig. 7.18 – Contando requisições de acesso de diferentes clientes.

Luís F. Faina - 2014 Pg. 77/116

7 Consistência e Replicação – 7.4 Gerenciamento de Réplica

… 7.4.2 Possicionamento de Conteúdo

● … quando o nro. de requisições para um arquivo “F” no servidor “S” cai abaixo de um limite estabelecido - “del(S,F)”, o arquivo pode ser removido do servidor;

● … como consequência o nro. de réplicas do arquivo “F” cai, possi- velmente acarretando um aumento de carga nos servidores;

● … medidas são tomadas para garantir que ao menos um cópia de cada arquivo continue a existir.

● … se o limite de replicação “rep(S,F)” é maior que “del(S,F)”, indica que vale a pena replicá-lo em outros servidores;

● … se o número de requisições estiver entre os limites de replicação e remoção, então para aquele arquivo é permitido somente a migração.

Luís F. Faina - 2014 Pg. 78/116

7 Consistência e Replicação – 7.4 Gerenciamento de Réplica

… 7.4.2 Possicionamento de Conteúdo

● Quando um servidor “Q” decide reavaliar os arquivos no seu repositório, 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 cópia;

● … além disso, se para algum servidor “P”, “cnt Q (P,F) excede em mais da metada do total de requisições para “F” em “Q”, o servidor “P” é solicitado a assumir a cópia de “F”, ou seja, migração.

● … migração 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 replicação “rep(Q,F)”.

Luís F. Faina - 2014 Pg. 79/116

7 Consistência e Replicação – 7.4 Gerenciamento de Réplica

… 7.4.2 Possicionamento de Conteúdo

● “client-initiated replica” - comumente conhecidas como “cache”, são na essência um armazenamento local utilizado pelo cliente para armazenar temporariamente dados objeto da requisição;

● … “data store” do qual os dados foram lidos não tem nada a ver com a manutenção da consistência dos dados salvaguardados;

● … quando a maior parte das operação são leituras de dados, o cliente pode guardar os dados que são requisitados em uma “cache” local para melhorar o desempenho;

● … essa “cache” está na máquina cliente ou em uma “cache” separada na rede local onde máquina cliente se encontra.

Luís F. Faina - 2014 Pg. 80/116

7 Consistência e Replicação – 7.4 Gerenciamento de Réplica

… 7.4.2 Possicionamento de Conteúdo

● … dados são mantidos na “cache” por um tempo limitado, p.ex., para prevenir dados obsoletos sendo usados ou simplesmente abrir espaço 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” são também requisitados pelo cliente “C2”.

● … possicionamento de “cache” de cliente é relativamente simples: “cache” é possicionada na mesma máquina que o cliente; “cache” na máquina compartilhada por clientes na rede local;

● … em alguns casos, níveis extras de “cache” são introduzidos entre departamentos ou organizações.

Luís F. Faina - 2014 Pg. 81/116

7 Consistência e Replicação – 7.4 Gerenciamento de Réplica

7.4.3 Distribuição de Conteúdo

● “gerenciamento de réplicas” - trata da propagação e/ou atualização de conteúdo para servidores relevantes de réplicas e envolve vários aspectos:

● “state vs operations” - um importante aspecto de projeto refere-se ao que deve ser propagado:

● propaga somente a notificação de atualização – nada é propagado além de notificações, ou seja, dados não são propagados;

● transferir dados de uma cópia para outra – quando a relação de leituras/ escritas é alta é interessante transferir dados;

● propagar a operação de atualização para as outras cópias – cada réplica recebe apenas parâmetros da operação de atualização.

Luís F. Faina - 2014 Pg. 82/116

7 Consistência e Replicação – 7.4 Gerenciamento de Réplica

… 7.4.3 Distribuição de Conteúdo

● “propagação de notificação” - nada é propagado além de notifi- cações, ou seja, encaminha através do protocolo de invalidação notificação às outras cópias de que o dado não é mais válido;

● … protocolo de invalidação pode especificar que parte do “data store” foi atualizada, assim, apenas uma parte da cópia está atualmente invalidada.

● … principal “vantagem” dos protocolos de invalidação é que utilizam pouca banda da rede, pois a informação transferida é a especificação de quais dados não mais são válidos;

● ... tais protocolos geralmente trabalham bem quando há muitas operações de atualização comparado com as operações de leitura, ou seja, relação leituras/escritas é relativamente pequena.

Luís F. Faina - 2014 Pg. 83/116

7 Consistência e Replicação – 7.4 Gerenciamento de Réplica

… 7.4.3 Distribuição de Conteúdo

● “transferir dados de uma cópia para outra” – utilizada quando a relação de leituras/escritas é relativamente alta;

● … neste contexto, a probabilidade que uma atualização seja efetiva no sentido de que o dado modificado será lido antes da próxima atualização é alta – justicando a transferência;

● … ao invés de propagar os dados modificados é possível salvar - “log” as mudanças e transfera somente aquelas alterações salvas para economizar banda de rede;

● … transferência são sempre concatenadas no sentido de que múltiplas modificações são agrupadas em um única mensagem, economizando “overhead” de comunicação.

Luís F. Faina - 2014 Pg. 84/116

7 Consistência e Replicação – 7.4 Gerenciamento de Réplica

… 7.4.3 Distribuição de Conteúdo

● “propagar a operação de atualização para as outras cópias” - também chamada de “replicação ativa”, cada réplica recebe apenas parâmetros da operação de atualização;

● “vantagem” - pode frequentemente ser propagada com o mínimo gasto de banda de rede, uma vez que os parâmetros associados com uma operação são relativamente pequenos;

● “desvantagem” - maior processamento pode ser exigido em cada um dos servidores de réplica, especialmente onde as operações são relativamente complexas.

Luís F. Faina - 2014 Pg. 85/116

7 Consistência e Replicação – 7.4 Gerenciamento de Réplica

… 7.4.3 Distribuição de Conteúdo

● “protocolos pull vs push” - podem ser subdivididos em “push-based protocols” e “pull-based protocols”.

● “push-based protocols” - servidor inicia a atualização sem que outro servidor ou cliente encaminhe solicitação.

● “pull-based protocols” - servidor ou cliente encaminha solicitação de atualização para um servidor de réplicas.

Luís F. Faina - 2014 Pg. 86/116

7 Consistência e Replicação – 7.4 Gerenciamento de Réplica

… 7.4.3 Distribuição de Conteúdo

● “push-based protocols” ou “server-based protocols” - servidor pro- paga as atualizações para as réplicas, independente de solicitação por parte das réplicas.

● … envio de atualizações é frequentemente usado entre réplicas perma- nentes iniciadas pelo servidor, mas pode ser usado para atualização de “cache” de clientes.

● … são normalmente aplicadas quando as réplicas são mantidas sob um alto grau de consistência – réplicas idênticas.

● Alto grau de consistência advém do fato de que réplicas permanentes iniciadas pelo servidor são caracterizadas por operações de leitura;

● … nestes casos, “push-based protocols” são eficientes no sentido de que toda atualização será passível de leitura com alta probabilidade por 01 (um) ou mais leitores.

Luís F. Faina - 2014 Pg. 87/116

7 Consistência e Replicação – 7.4 Gerenciamento de Réplica

… 7.4.3 Distribuição de Conteúdo

● “pull-based protocols” ou “client-based protocols” - servidor ou cliente solicita a um outro servidor que encaminhe quaisquer atualizações que tenha até o momento;

● … frequentemente usada em “caches” de clientes, “pull-based protocols” são 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 relação ao “push-based protocols” é que o tempo de resposta cresce nos casos de “cache miss”.

Luís F. Faina - 2014 Pg. 88/116

7 Consistência e Replicação – 7.4 Gerenciamento de Réplica

… 7.4.3 Distribuição de Conteúdo

● “push-based protocols” - servidor rastreia todas as “caches” de clientes e pelo fato do servidor ser menos tolerante a falhas, considerável “overhead” é introduzido no servidor.

● “messages sent” - mensagens são enviadas para cada cliente no protocolo “push-based” para atualização;

● … enquanto no protocolo “pull-based” o cliente irá escolher o servidor e, se necessário, solicitar o dado modificado.

● Fig. 7.19 – Comparação entre protocolos “push-based” e “pull- based” em um cenário com múltiplos clientes e 01 servidor.

Luís F. Faina - 2014 Pg. 89/116

7 Consistência e Replicação – 7.4 Gerenciamento de Réplica

… 7.4.3 Distribuição de Conteúdo

● “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 – Comparação entre protocolos “push-based” e “pull- based” em um cenário com múltiplos clientes e 01 servidor.

Luís F. Faina - 2014 Pg. 90/116

7 Consistência e Replicação – 7.4 Gerenciamento de Réplica

… 7.4.3 Distribuição de Conteúdo

● “unicasting vs multicasting” - relacionado com envio ou recuperação de atualização pela rede subjacente;

● “unicast communication” - quando um servidor, parte de um “data store” encaminha suas atualizações para “n” outros servidores, isto se dá através de “n” mensagens em separado;

● “multicast communication” - normalmente, a rede subjacente se encarrega de enviar de modo eficiente as mensagens para múltiplos receptores – servidores ou clientes.

● … em muitos casos, é mais barato utilizar “multicast” disponível, embora exceções possam ocorrer.

● e.g., considere que todas as réplicas estão localizadas na mesma rede local e que tenha disponível o “broadcasting”;

Luís F. Faina - 2014 Pg. 91/116

7 Consistência e Replicação – 7.4 Gerenciamento de Réplica

… 7.4.3 Distribuição de Conteúdo

● e.g., considere que todas as réplicas estão localizadas na mesma rede local e que tenha disponível o “broadcasting”;

● … neste caso, “broadcasting” ou “multicasting” não é mais caro que encaminhar mensagens ponto-a-ponto;

● “multicasting” - pode ser com frequência 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 responsável pela requisição de atualização de suas cópias.

Luís F. Faina - 2014 Pg. 92/116

7 Consistência e Replicação – 7.5 Protocolos de Consistência

7.5 Protocolos de Consistência

● Nesta seção, nos concentramos na implementação dos modelos de consistência através dos protocolos de consistência.

● “consistency protocol” - descreve a implementação de um modelo de consistência específico.

Luís F. Faina - 2014 Pg. 93/116

7 Consistência e Replicação – 7.5 Protocolos de Consistência

7.5.1 Consistência Contínua

● “Yu & Vahdat” (2002) - desenvolveram alguns protocolos para tratar as 03 formas de consistência: desvio de valor numérico; desvio de idade e desvio de ordenação de operações.

● “bounding numerical desviation” - deseja-se manter o desvio numérico dentro de limites previamente estabelecidos.

● … cada “W(x)” será associado a um peso que representa o valor numérico para o qual “x” será atualizado, ou seja, “weight( W(x) )” ou simplesmente “weight( W )” com “weight( W )” > 0;

● … “TW[ i,j ]” são escritas executas em no servidor “Si” que tenham sido originadas do servidor “Sj”, ou seja:

Luís F. Faina - 2014 Pg. 94/116

7 Consistência e Replicação – 7.5 Protocolos de Consistência

7.5.1 Consistência Contínua

● “TW[ i,j ]” são escritas executas em no servidor “Si” que tenham sido originadas do servidor “Sj”, ou seja:

TW[ i,j ] = Somatório { 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) + Somatóriok=1 até N TW[ k,k ] - v(0) valor inicial de “x”;

vi = v(0) + Somatóriok=1 até N TW[ i,k ] - este valor é determinado por todas as escritas já submetidas no servidor.

Luís F. Faina - 2014 Pg. 95/116

7 Consistência e Replicação – 7.5 Protocolos de Consistência

7.5.1 Consistência Contínua

● … 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 epidêmico;

● … 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 visão “TWk[ i,j ]” sobre o que “Si” terá como valor para “TW[ i,j ]” ...

0 ≤ TWk[ i,j ] ≤ TW[ i,j ] ≤ TW[ j,j ]

Luís F. Faina - 2014 Pg. 96/116

7 Consistência e Replicação – 7.5 Protocolos de Consistência

7.5.1 Consistência Contínua

● … a idéia é que quando o servidor “Sk” percebe que “Sj” não está no passo de atualização submetida por “Sk”, ele encaminha escritas do seu “log” de escritas para “Si”;

● … este encaminhamento efetivamente avança a visão “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” avança na “view”.

Luís F. Faina - 2014 Pg. 97/116

7 Consistência e Replicação – 7.5 Protocolos de Consistência

7.5.2 Protocolo “Primary-Based”

● Na prática, verifica-se que aplicações distribuídas geralmente seguem modelos de consistência fáceis de serem entendidos, p.ex., desvio numérico ou desvio de idade;

● … se considerarmos modelos que tratam a consistência de ordenação de operações ou a consistência sequencial;

● … verifica-se que são populares aqueles modelos nos quais as operações podem ser agrupadas por “locks” ou por transações;

● … a medida que os modelos de consistência tornam-se mais difíceis de serem entendidos pelos desenvolvedores, os mesmos são ignorados ainda que melhorem a performance.

Luís F. Faina - 2014 Pg. 98/116

7 Consistência e Replicação – 7.5 Protocolos de Consistência

… 7.5.2 Protocolo “Primary-Based”

● Na consistência sequencial, cada item de dado “x” do “data store” tem um primário associado, que é responsável pela coordenação de operações de escrita em “x” => “primary-based protocols”.

● “Remote-Write Protocols” - … todas as operações de escrita são encaminhadas para servidor único e fixo, enquanto as operações de leitura são mantidas localmente.

● … primário realiza a atualização na sua cópia local para “x” e, na sequência, encaminha a atualização para o servidor de “backup”, que por sua vez informa ao primário a conclusão da atualização.

Luís F. Faina - 2014 Pg. 99/116

7 Consistência e Replicação – 7.5 Protocolos de Consistência

… 7.5.2 Protocolo “Primary-Based”

● Fig. 7.20 – Princípio dos Protocolos “Primary-Based”

Luís F. Faina - 2014 Pg. 100/116

7 Consistência e Replicação – 7.5 Protocolos de Consistência

… 7.5.2 Protocolo “Primary-Based”

● “problema potencial” - … processo que iniciou a atualização pode ter que esperar um longo tempo para continuar, pois normalmente a atualização é implementada como operação bloqueante;

● … uma alternativa é o uso de operações não bloqueantes, assim, tão logo tenha atualizado sua cópia local de “x”, o mesmo retorna o reconhecimento para o solicitante;

● … somente depois solicita aos servidores de “backup” que procedam com a atualização em suas cópias locais.

● “problema” - clientes não sabem com certeza que operações de atualização foram de fato complementadas, ou seja, são problemas relacionados a tolerância a falhas.

Luís F. Faina - 2014 Pg. 101/116

7 Consistência e Replicação – 7.5 Protocolos de Consistência

… 7.5.2 Protocolo “Primary-Based”

● “Local-Write Protocols” - quando um processo quer atualizar um item de dado “x”, ele localiza a cópia primária de “x” e move o item da dado “x” da cópia primária para a sua localização.

● … operações de escrita sucessivas são realizadas localmente, enquanto processos de leitura acessam suas cópias locais;

● … atualizações são propagadas para as réplicas após o primário completar, ou seja, cada cópia local atualizar e retornar.

Luís F. Faina - 2014 Pg. 102/116

7 Consistência e Replicação – 7.5 Protocolos de Consistência

… 7.5.2 Protocolo “Primary-Based”

● Fig. 7.20 – Protocolo “Primary-Based” no qual o primário migra para o processo que quer realizar a atualização.

Luís F. Faina - 2014 Pg. 103/116

7 Consistência e Replicação – 7.5 Protocolos de Consistência

… 7.5.2 Protocolo “Primary-Based”

● e.g., computadores móveis que operam em modo disconectado podem utilizar o protocolo “primary-based” com escrita local;

● … antes de se desconectar, o computador torna-se o servidor primário para cada item de dado que ele espera atualizar;

● … enquanto desconectado, todas as atualizações são realizadas localmente, enquanto outros processos podem efetuar leituras nas suas cópias locais, mas nenhuma atualização;

● … mais tarde, atualizações são propagadas para os “backups”, trazendo o “data store” para o estado consistente.

Luís F. Faina - 2014 Pg. 104/116

7 Consistência e Replicação – 7.5 Protocolos de Consistência

7.5.3 Protocolos “Replicated-Write”

● “Replicated-Write Protocols” - operações de escrita podem ser realizadas em múltiplas réplicas ao invés de somente uma, como no caso de “primary-based replicas”.

● … distinções podem ser estabelecidas entre replicação ativa, na qual uma operação é encaminhada para todas as réplicas, e protocolos de consistência baseados em votação majoritária.

Luís F. Faina - 2014 Pg. 105/116

7 Consistência e Replicação – 7.5 Protocolos de Consistência

… 7.5.3 Protocolos “Replicated-Write”

● “active replication” - cada réplica tem um processo associado que realiza operações de atualização;

● … atualizações são propagadas através das operações de escrita que causam as atualizações, ou seja, operações são enviadas para cada uma das réplicas.

● “problema” - operações precisam ser realizadas na mesma ordem em todas as réplicas - “backups”, exigindo um mecanismo “multicast” totalmente ordenado;

● … ainda que implementado com o relógio lógico de Lamport, o “multicasting” não é escalável em sistemas distribuídos grandes.

Luís F. Faina - 2014 Pg. 106/116

7 Consistência e Replicação – 7.5 Protocolos de Consistência

… 7.5.3 Protocolos “Replicated-Write”

● “quorum-based protocols” - … clientes precisam requerer e adquirir a permissão de múltiplos servidores antes de ler ou escrever um item de dado replicado.

● e.g., considere um sistema de arquivo distribuído 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 atualização;

● … uma vez que tenham concordado, o arquivo é modificado e um novo nro. de versão é associado ao novo arquivo;

● … procedimento análogo é válido para ler um arquivo replicado.

Luís F. Faina - 2014 Pg. 107/116

7 Consistência e Replicação – 7.5 Protocolos de Consistência

… 7.5.3 Protocolos “Replicated-Write”

● e.g., considere 05 servidores e um cliente determina que 03 deles tem a versão 8 de um dado arquivo, é impossível que os outros 02 tenham a versão 9 ?

● … qualquer atualização bem sucedida da versão 08 para a 09 requer que 03 servidores tenham concordado, e não 02;

● … portanto, é impossível que os outros 02 tenham a versão 09!

Luís F. Faina - 2014 Pg. 108/116

7 Consistência e Replicação – 7.5 Protocolos de Consistência

… 7.5.3 Protocolos “Replicated-Write”

● “Gifford's Scheme” - para ler um arquivo com “N” réplicas, um cliente precisa montar um “quorum” de leitura, ou seja, um coleção arbitrária 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 restrição previne conflitos de leitura-escrita;

● 2a restrição previne conflitos de escrita-escrita.

● Obs.: somente depois de um nro apropriado de servidores concordarem em participar, pode um arquivo ser lido ou escrito.

Luís F. Faina - 2014 Pg. 109/116

7 Consistência e Replicação – 7.5 Protocolos de Consistência

… 7.5.3 Protocolos “Replicated-Write”

● Fig. 7.22 – 03 exemplos do Algoritmo de Votação. 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)

Luís F. Faina - 2014 Pg. 110/116

7 Consistência e Replicação – 7.5 Protocolos de Consistência

7.5.4 Protocolos “Cache-Coherence”

● “cache” - caso especial de replicação no sentido que é geral- mente controlada pelos clientes e não pelos servidores.

● “cache-coherence protocols” - garantem que a “cache” esteja consistente com réplicas iniciadas pelo servidor e, não são diferentes dos protocolos de consistência vistos anteriormente.

● … soluções de “caching” diferem na sua estratégia de detecção de coerência, ou seja, quando inconsistências aparecem:

● “static solution” - compilador faz a análise necessária antes da execução, para determinar quais dados podem se tornar inconsistentes e, na sequência, simplesmente insere instruções para evitar inconsistências.

● “dynamic solution” - inconsistências na “cache” são detectadas com o servidor em tempo de execução para ver quando durante uma transação um dado na “cache” foi modificado.

Luís F. Faina - 2014 Pg. 111/116

7 Consistência e Replicação – 7.5 Protocolos de Consistência

… 7.5.4 Protocolos “Cache-Coherence”

● “coherence enforcement strategy” - variação de protocolos de coerência de “cache”, determina como as “caches” são mantidas consistentes com as cópias armazenadas nos servidores;

● “solução mais simples” - não permitir que dados sejam mantidos em “caches”, ou seja, dados compartilhados são mantidos so- mente nos servidores que por sua vez mantém a consistência ;

● … se, no entanto, dados compartilhados são mantidos em “cache”, há 02 abordagens para garantir a coerência:

01 – deixar o servidor enviar a invalidação para todas as “caches” quando um item de dado é modificado;

02 – servidor propaga a atualização para todas as “caches” quando um item de dado é modificado.

Luís F. Faina - 2014 Pg. 112/116

7 Consistência e Replicação – 7.5 Protocolos de Consistência

… 7.5.4 Protocolos “Cache-Coherence”

● … seja no envio da invalidação ou das atualizações, ambas são frequentemente suportadas por banco de dados dos clientes.

● Também é necessário considerar o cenário no qual um processo modifica itens de dados na “cache”:

● “read-only caches” - operações de atualização podem ser realizadas somente pelos servidores.

● “write-through caches” - permitir que o cliente modifique os dados da “cache” e encaminhe a atualização para o servidor.

Luís F. Faina - 2014 Pg. 113/116

7 Consistência e Replicação – 7.5 Protocolos de Consistência

7.5.5 Implementando Consistência “Client-Centric”

● Normalmente, a implementação de consistência tendo por base o cliente é direta, se aspectos de desempenho forem ignorados.

● “naive implementation” - cada operação de escrita recebe um identificador global único, que é atribuído pelo servidor para o qual a operação de escrita foi submetida;

● … para cada cliente, 02 conjuntos de “writes” são mantidos:

● conjunto de leituras para o cliente consiste de escritas relevantes para as operações de leitura realizadas por aquele cliente;

● conjunto de escritas para o cliente consiste de escritas, ou os seus identificadores, realizadas por aquele cliente.

Luís F. Faina - 2014 Pg. 114/116

7 Consistência e Replicação – 7.5 Protocolos de Consistência

7.5.5 Implementando Consistência “Client-Centric”

● “monotonic-read consistency” :

● … quando um cliente realiza uma operação de leitura no servidor, o servidor trata o conjunto de leituras do cliente para verificar quais identificador de escrita ocorreram localmente;

● … se não, o cliente contacta outros servidores para garantir que está atualizado antes de realizar a operação de leitura;

● … ocasionalmente, a operação de leitura pode ser encaminhada para o servidor onde a operação de escrita já tenha ocorrido;

● … após a operação de leitura ser completada, a operação de escrita já concluída no servidor selecionado e que é relevante para a operação de leitura é adicionada ao “read set” do cliente.

Luís F. Faina - 2014 Pg. 115/116

7 Consistência e Replicação – 7.5 Protocolos de Consistência

… 7.5.5 Implementando Consistência “Client-Centric”

● .. é possível determinar exatamente onde a operação de escrita indentificada no “read set” ocorreu, p.ex., incluindo o identificador do servidor para o qual a operação foi submetida no identificador da operação de escrita - “write identifier”;

● … cabe ao servidor, manter o “log” de operações de escrita para até mesmo repetir em outro servidor;

● … adicionalmente, operações de escrita devem ser realizadas na ordem em que foram submetidas, p.ex., permitindo que o cliente gere nro. de sequência global único e incluí-lo no “write identifier”;

● … como o dado pode ser modificado apenas pelo proprietário, o último pode manter o nro. de sequência.

Luís F. Faina - 2014 Pg. 116/116

7 Consistência e Replicação – 7.5 Protocolos de Consistência

… 7.5.5 Implementando Consistência “Client-Centric”

● “monotonic-write consistency” :

● … quando o cliente inicia uma nova operação de escrita, o servidor recebe o “write set” do cliente;

● … na sequência, garante que as operações de escrita identifica- das sejam realizadas primeiro e na ordem correta;

● … após executar a nova operação, o identificador de escrita da operação é adicionado ao “write set”;

● Obs.: Atualizar o servidor com o “write set” do cliente, introduz considerável aumento no tempo de resposta uma vez que o cliente deve esperar a operação ser concluída.