11.04.2013 Views

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

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

4.1. RECONCILIAÇÃO 55<br />

4.1.3 Or<strong>de</strong>m causal<br />

Uma operação é executada por or<strong>de</strong>m causal quando apenas é executada após ter<strong>em</strong> sido executadas<br />

todas as operações conhecidas no momento da sua submissão no cliente. A or<strong>de</strong>m causal não garante<br />

que as operações sejam executadas pela mesma or<strong>de</strong>m <strong>em</strong> todas as réplicas. Assim, não é possível, no<br />

caso geral, garantir que os coobjectos converg<strong>em</strong> para o mesmo estado.<br />

O componente <strong>de</strong> reconciliação or<strong>de</strong>m causal pessimista executa imediatamente todas as operações<br />

conhecidas com as <strong>de</strong>pendências causais satisfeitas (e que po<strong>de</strong>m ser executadas face às limitações apre-<br />

sentadas anteriormente). Assim, cada réplica po<strong>de</strong> não reflectir todas as operações conhecidas. Para<br />

conhecer imediatamente o resultado <strong>de</strong> uma operação é necessário propagar a operação para um servidor<br />

que conheça todas as operações reflectidas na cópia do cliente. O servidor a partir do qual a cópia foi<br />

obtida satisfaz esta proprieda<strong>de</strong>.<br />

Os blocos só-uma-vez são executados no servidor que recebeu a operação do cliente. No entanto,<br />

como as operações po<strong>de</strong>m não ser executadas imediatamente quando são recebidas, é necessário garantir<br />

que quando um servidor é r<strong>em</strong>ovido do grupo <strong>de</strong> replicadores do volume, os blocos só-uma-vez <strong>de</strong> todas<br />

as operações recebidas nesse servidor são executadas.<br />

No sist<strong>em</strong>a DOORS, um servidor abandona voluntariamente o grupo <strong>de</strong> replicadores <strong>de</strong> um volume<br />

através <strong>de</strong> um protocolo que estabelece com apenas outro replicador do volume, que assume o papel <strong>de</strong><br />

patrocinador. Durante este protocolo, apresentado na secção 6.2.1 e <strong>de</strong>talhado nos apêndices A.1.4 e<br />

A.1.8, o servidor a r<strong>em</strong>over <strong>de</strong>lega na réplica do servidor patrocinador a responsabilida<strong>de</strong> <strong>de</strong> executar<br />

os blocos só-uma-vez não executados localmente. Antes <strong>de</strong> ser r<strong>em</strong>ovido, o servidor a r<strong>em</strong>over executa<br />

ainda os blocos só-uma-vez relativos às operações que o patrocinador já tenha executado.<br />

Quando se processa a r<strong>em</strong>oção forçada <strong>de</strong> um servidor que falhou <strong>de</strong>finitivamente, é impossível<br />

<strong>de</strong>terminar as operações que esse servidor já executou. Assim, não se <strong>de</strong>lega <strong>em</strong> nenhum servidor a<br />

execução dos blocos só-uma-vez das operações recebidas no servidor avariado. É por esta razão que a<br />

s<strong>em</strong>ântica exacta <strong>de</strong> execução <strong>de</strong>stes blocos é no máximo uma vez.<br />

4.1.4 Or<strong>de</strong>m total<br />

As operações são executadas por or<strong>de</strong>m total quando, <strong>em</strong> todas as réplicas, são executadas pela mesma<br />

or<strong>de</strong>m. Neste caso, se as operações for<strong>em</strong> <strong>de</strong>terministas, garante-se que as várias réplicas do coobjecto<br />

converg<strong>em</strong> para o mesmo estado. De seguida, apresentam-se as várias estratégias utilizadas para garantir<br />

a execução das operações por or<strong>de</strong>m total.

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

Saved successfully!

Ooh no, something went wrong!