gestão de dados partilhados em ambientes de computação móvel

gestão de dados partilhados em ambientes de computação móvel gestão de dados partilhados em ambientes de computação móvel

asc.di.fct.unl.pt
from asc.di.fct.unl.pt More from this publisher
11.04.2013 Views

182 CAPÍTULO 11. TRABALHO RELACIONADO presente num cliente. Primeiro, abordamos o problema da propagação entre réplicas principais. Nos sistemas de replicação síncrona [114], as modificações executadas numa réplica são propagadas imediatamente de forma sín- crona para todas (ou para um quorum de) as outras réplicas. Esta solução tem dificuldade em lidar com as falhas e apenas pode ser usada com um número reduzido de réplicas. Para que o sistema suporte um elevado número de elementos é necessário que a propagação das modificações seja efectuada de forma assíncrona (como acontece sempre nos sistema de replicação optimista). Uma aproximação simples consiste na utilização dum esquema lazy master, no qual apenas um ser- vidor recebe as modificações que propaga assincronamente para as outras réplicas. Outra aproximação consiste na utilização de técnicas de propagação epidémica em que uma réplica propaga todas as modi- ficações conhecidas independentemente da réplica em que tiveram origem. Vários algoritmos e sistemas usam esta aproximação [38, 57, 84, 101, 66, 122], nos quais se podem encontrar várias soluções para a escolha do parceiro e momento da sessão de propagação epidémica (topologias fixas – anel, árvore, etc. – ou variáveis – o parceiro é escolhido aleatoriamente), para determinar quais as modificações que devem ser propagadas e para o protocolo de propagação (unidireccional ou bidireccional). A solução ideal para cada sistema depende da topologia da rede de comunicações e da estratégia de reconciliação implementada. No sistema DOORS, a propagação é epidémica uni ou bidireccional e usam-se vectores-versão para determinar de forma exacta quais as operações que necessitam de ser propagadas. A topologia, momento das sessões de propagação e coobjectos envolvidos, pode ser definida pelo administrador do sistema de forma específica para cada volume. Na propagação das modificações de uma réplica secundária para uma réplica primária existem, pelo menos, três possibilidades. Primeiro, o cliente entrega a modificação a uma só réplica principal. Esta é a aproximação usual (adoptada nos sistemas implementados nesta dissertação). Segundo, o cliente propaga de forma coordenada a modificação para mais do que uma réplica. Por exemplo, no sistema Coda [87] um cliente instala uma nova versão de um ficheiro em vários servidores simultaneamente. Esta aproximação também pode ser usada para tolerar falhas bizantinas [28]. Terceiro, um cliente propaga de forma não coordenada uma modificação para mais do que uma réplica. Neste caso, é, em geral, necessário detectar a igualdade das modificações recorrendo a informação criada no cliente. Por exemplo, o sistema lazy replication [93] mantém identificadores únicos para cada operação. Quando as réplicas principais são modificadas, os clientes têm de invalidar a cópias locais e obter no- vas cópias. Para tal, existem duas aproximações. Primeiro, o cliente verifica (periodicamente ou quando acede aos dados) se a sua cópia permanece actual. Segundo, o servidor informa os clientes das modi- ficações. Esta informação pode conter os novos dados ou apenas informação sobre a sua modificação

11.1. REPLICAÇÃO 183 e ser propagado individualmente para cada cliente [107] ou disseminado através dum canal (físico) de difusão de mensagens [14]. Este problema está fora do âmbito do trabalho desta dissertação, tendo-se implementado a solução mais simples nos protótipos do sistema DOORS e Mobisnap: o cliente verifica periodicamente a validade das cópias locais. 11.1.9 Reconciliação A reconciliação consiste em unificar as modificações executadas sem coordenação em duas (ou mais) réplicas de um objecto. Este mecanismo elementar é usado num protocolo de reconciliação, o qual deve, em geral, garantir a convergência final das várias réplicas, i.e., garantir que após um período de tempo finito após a última modificação executada, as várias réplicas são iguais. De seguida abordam-se as téc- nicas de reconciliação elementares baseadas na utilização do estado das várias réplicas e na propagação das operações efectuadas. 11.1.9.1 Utilização do estado das réplicas Nesta subsecção abordam-se as técnicas de reconciliação baseadas na utilização do estado das várias réplicas. Estas técnicas de reconciliação determinam, em cada réplica, qual o novo estado da réplica que resulta da unificação do estado de duas réplicas. O primeiro tipo de aproximação consiste em, dado um conjunto de réplicas divergentes, seleccionar uma réplica como resultado da reconciliação. Usando a regra de escrita de Thomas [163], cada réplica tem associada uma estampilha temporal (sobre as quais se define uma ordem total) atribuída aquando da sua mais recente modificação. O resultado da reconciliação consiste em seleccionar a réplica com maior estampilha temporal. Vários sistemas [80, 155] usam esta aproximação. Uma estratégia alternativa consiste em permitir ao utilizador seleccionar qual o valor que deve ser mantido. Por exemplo, na sincronização de PDAs [117] é usual poder seleccionar-se qual o valor a manter: o valor do computador fixo ou o valor do dispositivo portátil. A verificação da validade das transacções usando os conjuntos de leitura e escrita [60] pode ser considerada uma extensão desta aproximação, em que se usam objectos de reduzidas dimensões, se seleccionam as modificações mais antigas e se detectam adicionalmente conflitos leitura/escrita. O segundo tipo de aproximação que vamos considerar consiste na criação e manutenção de versões: duas réplicas de um objecto modificadas concorrentemente dão origem a duas versões, mantidas em cada uma das réplicas. Os utilizadores podem, posteriormente, unificar essas versões. Deve notar-se que, neste caso, a existência de várias versões de um objecto não é considerado um erro, decorrendo do modo de funcionamento normal do sistema. O sistema Lotus Notes [101] é um exemplo típico do uso desta aproximação.

182 CAPÍTULO 11. TRABALHO RELACIONADO<br />

presente num cliente.<br />

Primeiro, abordamos o probl<strong>em</strong>a da propagação entre réplicas principais. Nos sist<strong>em</strong>as <strong>de</strong> replicação<br />

síncrona [114], as modificações executadas numa réplica são propagadas imediatamente <strong>de</strong> forma sín-<br />

crona para todas (ou para um quorum <strong>de</strong>) as outras réplicas. Esta solução t<strong>em</strong> dificulda<strong>de</strong> <strong>em</strong> lidar com<br />

as falhas e apenas po<strong>de</strong> ser usada com um número reduzido <strong>de</strong> réplicas. Para que o sist<strong>em</strong>a suporte um<br />

elevado número <strong>de</strong> el<strong>em</strong>entos é necessário que a propagação das modificações seja efectuada <strong>de</strong> forma<br />

assíncrona (como acontece s<strong>em</strong>pre nos sist<strong>em</strong>a <strong>de</strong> replicação optimista).<br />

Uma aproximação simples consiste na utilização dum esqu<strong>em</strong>a lazy master, no qual apenas um ser-<br />

vidor recebe as modificações que propaga assincronamente para as outras réplicas. Outra aproximação<br />

consiste na utilização <strong>de</strong> técnicas <strong>de</strong> propagação epidémica <strong>em</strong> que uma réplica propaga todas as modi-<br />

ficações conhecidas in<strong>de</strong>pen<strong>de</strong>nt<strong>em</strong>ente da réplica <strong>em</strong> que tiveram orig<strong>em</strong>. Vários algoritmos e sist<strong>em</strong>as<br />

usam esta aproximação [38, 57, 84, 101, 66, 122], nos quais se po<strong>de</strong>m encontrar várias soluções para<br />

a escolha do parceiro e momento da sessão <strong>de</strong> propagação epidémica (topologias fixas – anel, árvore,<br />

etc. – ou variáveis – o parceiro é escolhido aleatoriamente), para <strong>de</strong>terminar quais as modificações que<br />

<strong>de</strong>v<strong>em</strong> ser propagadas e para o protocolo <strong>de</strong> propagação (unidireccional ou bidireccional). A solução<br />

i<strong>de</strong>al para cada sist<strong>em</strong>a <strong>de</strong>pen<strong>de</strong> da topologia da re<strong>de</strong> <strong>de</strong> comunicações e da estratégia <strong>de</strong> reconciliação<br />

impl<strong>em</strong>entada.<br />

No sist<strong>em</strong>a DOORS, a propagação é epidémica uni ou bidireccional e usam-se vectores-versão para<br />

<strong>de</strong>terminar <strong>de</strong> forma exacta quais as operações que necessitam <strong>de</strong> ser propagadas. A topologia, momento<br />

das sessões <strong>de</strong> propagação e coobjectos envolvidos, po<strong>de</strong> ser <strong>de</strong>finida pelo administrador do sist<strong>em</strong>a <strong>de</strong><br />

forma específica para cada volume.<br />

Na propagação das modificações <strong>de</strong> uma réplica secundária para uma réplica primária exist<strong>em</strong>, pelo<br />

menos, três possibilida<strong>de</strong>s. Primeiro, o cliente entrega a modificação a uma só réplica principal. Esta é a<br />

aproximação usual (adoptada nos sist<strong>em</strong>as impl<strong>em</strong>entados nesta dissertação). Segundo, o cliente propaga<br />

<strong>de</strong> forma coor<strong>de</strong>nada a modificação para mais do que uma réplica. Por ex<strong>em</strong>plo, no sist<strong>em</strong>a Coda [87] um<br />

cliente instala uma nova versão <strong>de</strong> um ficheiro <strong>em</strong> vários servidores simultaneamente. Esta aproximação<br />

também po<strong>de</strong> ser usada para tolerar falhas bizantinas [28]. Terceiro, um cliente propaga <strong>de</strong> forma não<br />

coor<strong>de</strong>nada uma modificação para mais do que uma réplica. Neste caso, é, <strong>em</strong> geral, necessário <strong>de</strong>tectar<br />

a igualda<strong>de</strong> das modificações recorrendo a informação criada no cliente. Por ex<strong>em</strong>plo, o sist<strong>em</strong>a lazy<br />

replication [93] mantém i<strong>de</strong>ntificadores únicos para cada operação.<br />

Quando as réplicas principais são modificadas, os clientes têm <strong>de</strong> invalidar a cópias locais e obter no-<br />

vas cópias. Para tal, exist<strong>em</strong> duas aproximações. Primeiro, o cliente verifica (periodicamente ou quando<br />

ace<strong>de</strong> aos <strong>dados</strong>) se a sua cópia permanece actual. Segundo, o servidor informa os clientes das modi-<br />

ficações. Esta informação po<strong>de</strong> conter os novos <strong>dados</strong> ou apenas informação sobre a sua modificação

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!